2010-08-09 7 views
1

Possible en double:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectproblème avec mysql_fetch_array

Hé, je suis un débutant dans mySQL, voici le code que je l'ai écrit, `

 <?php 

     echo "Here is the table"; 
     $con = mysql_connect("localhost","root","mypassword"); 

     if(!$con) 
      die('Error:'.mysql_error()); 


     // Create table 
     mysql_select_db("my_db", $con); 
     $sql = "CREATE TABLE persons 
     (
      f_name varchar(15), 
      l_ame varchar(15), 
      age int 
     )"; 


     mysql_query("INSERT INTO persons (f_name, l_name, age) 
     VALUES ('Peter', 'Griffin', '35')"); 

     mysql_query("INSERT INTO persons (f_name, l_name, age) 
     VALUES ('Glenn', 'Quagmire', '33')"); 

     $res = mysql_query("SELECT * FROM persons"); 
     while($row = mysql_fetch_array($res)) 
     { 
      echo $row['f_name'] . " " . $row['l_name']; 
      echo "<br />"; 
     } 
    ?>` 

Je reçois l'erreur suivante

Voici la table Warning: mysql_fetch_array(): argument fourni est pas une ressource de résultat MySQL dans /var/www/PhpProject1/index.php sur la ligne 40

pourquoi je reçois cette erreur et comment puis-je le résoudre?

Répondre

2

Ce n'est pas réellement l'erreur mysql_fetch_array. ce message d'erreur indique que l'argument de cette fonction est faux.
et cet argument renvoyé par mysql_query()
signifie donc qu'il y avait une erreur lors de l'exécution de la requête, du côté mysql.
ans et mysql a beaucoup de messages d'erreur, très instructifs.

Ainsi, au lieu de deviner, vous devez entrer en contact avec certains message d'erreur qui vous dira ce qui est faux.

pour y parvenir, toujours exécuter vos requêtes de cette façon:

$sql = "SELECT * FROM persons"; 
$res = mysql_query($sql) or trigger_error(mysql_error().$sql); 
+0

+1 Ceci! Le simple fait de corriger les erreurs dans cette requête n'aidera pas le PO à long terme. –

2

La réponse de matschie est correcte mais ce n'est pas la seule erreur.

Votre colonne est également mal orthographié dans votre instruction create table:

l_ame varchar(15), 

devrait être:

l_name varchar(15), 

Pour attraper des erreurs comme vous-même, vous pouvez vérifier la valeur de retour de mysql_query pour voir si il y a une erreur et si c'est le cas, affichez l'erreur en utilisant mysql_error.

Un exemple de la façon de procéder est indiquée dans le manuel PHP pour mysql_query:

$result = mysql_query('SELECT * WHERE 1=1'); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
+0

je l'ai changé à L_Name, gettin toujours la même erreur que –

+0

@Tarun: Il y a une erreur dans plus de votre code. Je suggère que vous passiez cinq minutes pour apprendre à utiliser mysql_error (voir le manuel pour mysql_query et mysql_error). Ces cinq minutes passées maintenant vous feront économiser beaucoup d'heures dans le futur. –

+0

^sûr, merci Mark –

4

Vous n'avez pas créé la table « personnes », il vous suffit d'une chaîne avec la création Déclaration en elle. Il y a aussi une faute de frappe près de "l_ame varchar (15)", qui devrait être "l_name varchar (15)". Donc, vous devriez essayer le code suivant:

$sql = "CREATE TABLE persons 
( 
f_name varchar(15), 
l_name varchar(15), 
age int 
)";  
$res = mysql_query($sql) or trigger_error(mysql_error().$sql); ; 
+0

Ajout de cette ligne supplémentaire donnera toujours la même erreur. (Regardez attentivement la requête - il y a aussi une faute de frappe.) –

+0

True. Donc, vous pouvez simplement combiner les réponses de Mark Byers, Colonel Shrapnel et moi et le script devrait fonctionner ou au moins vous pouvez voir les erreurs qui se sont produites. – Matschie

Questions connexes