Dupliquer possible:
PHP: Attention: sort () s'attend à ce que le paramètre 1 soit un tableau, ressource donnée
Je suis assez nouveau pour PHP et MySQL et je n'arrive pas à comprendre celui-ci. J'ai fait des recherches dans tout le forum mais je n'ai trouvé aucune réponse qui puisse donner un sens. A l'origine, j'utilisais mysql_fetch_assoc (), mais je ne pouvais que rechercher des numéros et j'ai également reçu des erreurs lors de la recherche de lettres. J'espère que je suis sur la bonne voie ici. Merci d'avance pour toute votre aide!
$con = mysqli_connect($hostname,$username,$password) or die ("<script language='javascript'>alert('Unable to connect to database')</script>");
mysqli_select_db($con, $dbname);
if (isset($_GET['part'])){
$partid = $_GET['part'];
$sql = 'SELECT *
FROM $usertable
WHERE PartNumber = $partid';
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
$partnumber = $partid;
$nsn = $row["NSN"];
$description = $row["Description"];
$quantity = $row["Quantity"];
$condition = $row["Conditio"];
}
Cela se produit lorsque votre résultat n'est pas un résultat (mais un "faux" à la place) . Vous devriez changer cette ligne
$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
pour ça:
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";
parce que "peut interpréter $ variables while 'ne peut pas.
Fonctionne très bien avec des entiers (nombres). Pour les chaînes, vous devez mettre la variable $ entre guillemets simples, comme
$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";
Si vous voulez/devez travailler avec des guillemets simples, alors php NE PEUT PAS interpréter les variables, vous devrez le faire comme ceci:
$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
Cela signifie que le premier paramètre que vous avez transmis est un booléen (vrai ou faux).
Le premier paramètre est $result
, et il s'agit de false
, car la requête contient une erreur de syntaxe.
" ... WHERE PartNumber = $partid';"
Vous ne devez jamais inclure directement une variable de demande dans une requête SQL, sinon les utilisateurs peuvent injecter du SQL dans vos requêtes. (Voir SQL injection .)
Vous devriez échapper à la variable:
" ... WHERE PartNumber = '" . mysqli_escape_string($conn,$partid) . "';"
Ou mieux, utilisez Prepared Statements
.
Vous ne citez qu'une seule fois votre instruction SQL qui crée du texte de variable au lieu de variable.
$sql = "SELECT *
FROM $usertable
WHERE PartNumber = $partid";
Mysqli utilise la programmation orientée objet. Essayez plutôt d'utiliser cette approche:
function dbCon() {
if($mysqli = new mysqli('$hostname','$username','$password','$databasename')) return $mysqli; else return false;
}
if(!dbCon())
exit("<script language='javascript'>alert('Unable to connect to database')</script>");
else $con=dbCon();
if (isset($_GET['part'])){
$partid = $_GET['part'];
$sql = "SELECT *
FROM $usertable
WHERE PartNumber = $partid";
$result=$con->query($sql_query);
$row = $result->fetch_assoc();
$partnumber = $partid;
$nsn = $row["NSN"];
$description = $row["Description"];
$quantity = $row["Quantity"];
$condition = $row["Conditio"];
}
Faites-moi savoir si vous avez des questions, je ne pouvais pas tester ce code, donc vous devrez peut-être vérifier!
Que se passe-t-il dans votre code si $usertable
n'est pas une table valide ou n'inclut pas une colonne PartNumber ou une partie n'est pas un nombre.
Vous devez échapper à $ partid et également lire le document pour mysql_fetch_assoc () car il peut renvoyer un booléen