MSG d'erreur avec mysqli

Résolu/Fermé
clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 - Modifié le 6 mars 2019 à 12:25
clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 - 6 mars 2019 à 15:38
Bonjour,

J'aimerai comprendre un truc
Lorsque je fais un update dans une table de ma base, tout fonctionne normalement.
Lorsque je fais un insert into j'ai le message d'erreur
Warning: mysqli_error() expects exactly 1 parameter, 0 given in ....
J'avoue que je n'arrive pas à expliquer pourquoi ma liaison est bonne pour un truc et pas bonne pour l'autre....
J'ai lu avec intérêt les réponses sur CCM sur ce MSG d'erreur sans trouver mon bonheur!
Mon script connexion :
 $cnx= mysqli_connect($DBserveur, $DBlogin, $DBpassword, $DBbase); 
if ($cnx->connect_errno) {
    printf("Échec de la connexion : %s\n", $cnx->connect_error);
    exit();
 }

mon script requête:
include ("../lib/cnx.php");
$req="insert into livres (abrev,nom,prenom,titre,code) values ('$genre','$nom','$prenom','$titre','$init')" ;  
$exec=mysqli_query($cnxi, $req)or die (mysqli_error());



EDIT : Ajout des balises de code par la modération !

Bien sur, aucun ajout dans ma table..

Une explication?
Merci d'avance

Configuration: Windows / Firefox 65.0

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 mars 2019 à 12:26
Bonjour....

un i en trop... dans $cnxi


NB: A l'avenir, pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.

1
clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 1
Modifié le 6 mars 2019 à 14:59
Merci Jordane mais non, ce n'est pas ça... J'ai voulu alléger ma discussion je mets le code cnx.php en entier.
<?php
$cnxi= mysqli_connect($DBserveur, $DBlogin, $DBpassword, $DBbase);
if ($cnxi->connect_errno) {
printf("Échec de la connexion : %s\n", $cnxi->connect_error);
exit();
}
$cnx= mysqli_connect($DBserveur, $DBlogin, $DBpassword, $DBbase);
if ($cnx->connect_errno) {
printf("Échec de la connexion : %s\n", $cnx->connect_error);
exit();
}
?>

Pourquoi double syntaxe? Parce que lorsqu'on a du passer au mysqli, il y avait plein de requêtes mysql, et la flemme m'a conduit à me dire "Gardons $cnx et rajoutons des $cnxi...." (On avait eu un échange il y a quelques mois ou années sur le passage au mysqli! ) ça me fera économiser des "i" ;o).

Le problème demeure. Pourquoi, avec la même syntaxe, l'update marche, pas le insert?
Je copie mes 2 syntaxes :

ça ça marche :
<?php
je récupère les $_POST
include ("../lib/cnx.php");
if (empty($rendu))
{
$req="update livres set prete_a = '$emprunteur', prete_le = '$pret' where num = $num" ;
}
else
{
$req="update livres set prete_a = '$emprunteur', rendu_le = '$rendu' where num = $num" ;
}
$exec=$cnxi->query($req)or die (mysqli_error());
header ("location:index2.php");
?>

ça ça marche pas :
<?php
je récupère mes $_POST

include ("../lib/cnx.php");
$req="insert into livres (abrev,nom,prenom,titre,code) values ('$genre','$nom','$prenom','$titre','$init')" ;
$exec=$cnxi->query($req)or die (mysqli_error());
$exec=mysqli_query($cnxi, $req)or die (mysqli_error());
header("location:index2.php");
?>

Voila, voila.....
Merci en tous cas de l'aide au quotidien
0
clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 1
6 mars 2019 à 15:05
J'ai oublié de préciser que j'avais fait un echo de mes données transmises : tout est OK de ce côté...
0
clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 1
6 mars 2019 à 15:38
Ca y est; j'ai trouvé !!!!!!YOUPEEEEEEH
j'ai mis
$exec=$cnxi->query($req)or die (mysqli_error($cnxi));
Ca m'a permis de voir que ma table avait 4 colonnes aux valeurs par défaut non définies...J'ai rectifié et c'est bon..
Merci quand même pour l'assistance
0