Avertissement: mysqli_query() s'attend à ce paramètre 1 pour être mysqli, chaîne de caractères donnée en
J'ai eu l'avertissement meantioned dans le titre et mon code est ici:
<?php
require_once 'conn.php';
require_once 'http.php';
if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'Login':
if (isset($_POST['email'])
and isset($_POST['passwd']))
{
$sql = "SELECT user_id, access_lvl,name "."FROM cms_users"."WHERE email='" . $_POST['email'] . "' " .
"AND passwd='" . $_POST['passwd'] . "'";
$result = mysqli_query($sql, $conn) or die('Could not look up user information; ' . mysql_error());
- Vous êtes de mélange
mysqli_
etmysql_
.mysql_error
ne seront pas les erreurs de retour pourmysqli_
fonctions. - Belle attaque par injection sql de la vulnérabilité. Profiter d'avoir votre serveur pwn3d.
Vous devez vous connecter pour publier un commentaire.
C'est exactement comme le message d'erreur indique que vous êtes de passage d'arguments à mysqli_query de manière incorrecte. Assumming
$conn
est votre connexion mysqli généré à un certain point parnew mysqli()
il devrait être:La façon dont vous étiez l'appelant vous étiez passage d'une chaîne,
$sql
comme premier argument.mysql_error()
qui ne s'affichent pas dans les éditions.or die('Could not look up user information; ' . mysql_error());
qui devrait se lire commeor die('Could not look up user information; ' . mysqli_error($conn));
. Je n'ai jamais downvote à la hâte, btw. 😉Je suis 3 ans trop tard, mais tout ce que vous devez faire est de permuter les paramètres de
mysqli_query()
J'ai eu ce problème, mais après avoir introduit
$result = mysqli_query($sql, $conn)
à$result = mysqli_query( $conn,$sql)
J'ai réussi à résoudre cette erreur
J'ai la même erreur, bien que le $result = mysqli_query($conn, $sql) est la manière correcte autour de.
Je var_dump() sur $conn objet et c'est un objet à la fois que je lance la requête, mais renvoie toujours une chaîne donnée' erreur.
J'étais accès à l' $conn objet après avoir été analysée dans une fonction que j'utilisais il avec, de la même manière que j'ai fait tout au long de l'ensemble du projet sans erreur.
Re-déclarer l' $conn objet à l'intérieur de la fonction, au lieu de la passer dans la fonction arrêté les erreurs, bien que ce comportement ne se produit pas n'importe où ailleurs dans mon projet. Ce n'est pas une solution idéale.
À noter: je suis en utilisant un .env pour le développement local, ce qui provoque pas de problèmes et aide au déploiement, à l'échelle locale et à distance via .git.
Après de nombreuses heures, honnêtement, je crois qu'il existe un bogue de PHP ici, je suis en utilisant 7.3.0, mais s'est produite dans 7.2.5 ainsi que je suis certainement l'analyser en une connexion db objet, pas une chaîne de caractères.
Juste pour l'affichage de cette information, dans le cas où quelqu'un d'autre se heurte à elle. Merci.
PS. Les mots de passe ne doit pas être stocké dans la base de données en texte brut et est l'une des principales préoccupations en matière de sécurité. Si l'auteur n'a pas réglé ce encore (je sais c'est un vieux post), il est important de lire:
Secure hash et du sel pour les mots de passe en PHP