2009-09-29 7 views
1

Possible en double:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectProblème sur la façon d'afficher les informations sur les membres à partir d'une base de données avec mysql et php?

D'accord, j'ai un morceau de code qui, pour une raison me donne l'erreur suivante.

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in 

Voici le code.

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT * FROM sitename WHERE id='$user_id'"); 
while($row = mysqli_fetch_array($dbc)){ 
$state = $row["state"]; 
$city = $row["city"]; 
$zip = $row["zip"]; 
$bio_body = $row["bio_body"]; 
} 

Si vous le pouvez, aidez-moi en me donnant le bon code.

+0

Je suppose le mot de passe est laissé vide pour cet exemple? ne pas avoir un mot de passe défini laissera votre db ouvert à tous. http://xkcd.com/327/ –

Répondre

3

Votre mysqli_query retourne faux (ce qui signifie erreur dans la requête en général). Vérifier les erreurs de MySQL avant ne mysqli_fetch_array

+0

Thx, acrosman, mon anglais est laid :) –

0

de ce que je me souviens que u utilisent de nouvelles mysqli

devrait u être en utilisant mysqli- $> query() et mysqli- $> fetch_array() au lieu des méthodes traditionnelles?

ou u peut simplement supprimer le nouveau mot-clé et garder le reste de la même

+0

Vous pouvez utiliser les commandes mysqli de deux façons différentes: procédure et OO; ils ont une syntaxe différente. – Anax

+0

@Anax .. oui cette partie je sais .. mais je ne suis pas sûr si vous pouvez les mélanger les deux? –

0

Est-ce que vous codez fait appel SELECT * FROM sitename WHERE id='$user_id'? J'imagine que le nom de la table est des utilisateurs ou des membres ou quelque chose.

1

réfléchir à la façon de faire quelque chose intellegent avec vos erreurs jetez un oeil à la mysqli error function. Ce code doit exécuter et imprimer des erreurs, mais ce n'est pas une bonne façon de laisser le système à la fin (voir aussi le commentaire ci-dessus des mots de passe sur les blancs).

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT * FROM sitename WHERE id='$user_id'"); 
if (!$dbc) { 
    // There was an error...do something about it here... 
    print mysqli_error(); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
     $state = $row["state"]; 
     $city = $row["city"]; 
     $zip = $row["zip"]; 
     $bio_body = $row["bio_body"]; 
    } 
} 

Une note finale, si vous débutez avec PHP et bases de données, je suggère fortement que vous regardez dans PDO. Il fournit un niveau d'abstraction des données absent des anciennes fonctions et objets MySQL et MySQLi.

Questions connexes