Page 1 sur 1

PHP Warning: mysqli_query() expects parameter 1 to be mysql

Posté : 03 mai 2007, 14:34
par L0007
Bonjour,

Je travaille avec WAMP5 1.7.0 en local.

Le test suivant est effectué sur la database mysql de PHPMyAdmin (installée par défaut). J'avais essayé sur d'autres db mais le problème reste le même.

J'ai effectué divers essais avec les fonctions mysql_*() et tout fonctionne correctemment.

Ensuite, j'essaye d'utiliser les fonctions mysqli_*() mais ça ne fonctionne pas.

La connection fonctionne bien.
if ($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase)>0)
Le query pose problème:
$sql2="SELECT name FROM help_category";
$resultat2=mysqli_query($link,"SELECT name FROM help_category");
Je reçoit le message d'erreur suivant:
PHP Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in D:\www\PHP5_Avanc\MySQL\mysqli\mysqliConnection.php on line 19
<?php 
$mysqliserver='localhost';
$mysqlilogin='root';
$mysqlipassword='';
$mysqlidatabase="mysql";
if ($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase)>0)
	echo "Connexion à la base de données ".$mysqlidatabase." réussie!<br>";
else
	echo "Connexion à la base de données ".$mysqlidatabase." impossible!<br>";
$sql2="SELECT name FROM help_category";
$resultat2=mysqli_query($link,"SELECT name FROM help_category");
?>
Je dois modifier quelque chose dans ma config?
J'ai chercher sur le net différentes solutions mais je n'obtiens aucun résultat.

Merci de votre aide

Posté : 03 mai 2007, 15:03
par Sékiltoyai
Ton erreur est logique, car tu fais ca :
$link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase)>0
Ce qui revient à assigner à $link non pas la ressource de connexion mais le résultat de l'opération
mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase)>0
Il faut toujours mettre des parenthèses pour ne pas avoir ce genre de problèmes, et ensuite ce n'est pas juste d'utiliser '>0' pour vérifier que la connexion s'est bien faite.
Il vaut mieux préférer ca :
if($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase))
ou pour les perfectionnistes :
if(($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase))!==FALSE)

Posté : 03 mai 2007, 15:04
par titerm
Le message te dit que tu fournis un booleen en param 1.

dans ton code, tu as
if ($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase)>0) 
Essai donc de mettre des parentheses pour t'assurer que dans link tu as bien le retour de mysqli_connect et pas le résulat de mysqli_connect > 0
if (($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase))>0) 
Ou plus clair, tu mets ca sur 2 lignes, c'est pas plus cher et plus lisible
$link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase);
if ($link>0) 

Posté : 03 mai 2007, 15:05
par titerm
/me slap Sékiltoyai !

Posté : 03 mai 2007, 15:09
par Sékiltoyai
/me slap Sékiltoyai !
grillé :p

Posté : 03 mai 2007, 15:39
par L0007
Génial, c'est bien l'erreur des parenthèses.

Merci à tous.

PS: Séki... je crois que je vais pouvaoir fermer l'autre post :lol:

Posté : 03 mai 2007, 16:20
par Sékiltoyai
Utilises cette syntaxe :
if($link=mysqli_connect($mysqliserver,$mysqlilogin,$mysqlipassword,$mysqlidatabase))