繁体   English   中英

如何获取选择查询工作sqli

[英]How to get select query working sqli

我想在PHP中使用sqli在用户表上执行选择查询。 出于安全原因(SQL注入),我想使用参数来做到这一点。 我也想将结果存储在php变量中。

这是我的代码:

$conn变量正确填写。

$login = $_POST['username'];

//Check if username is available
/*Line44*/ $stmt = $conn->prepare("SELECT login FROM users WHERE login = ?");
/*Line45*/ $stmt->bind_param('s', $login);
           $result = $stmt->execute();

if ($result->num_rows > 0) 
{
    echo "This username is in use.";
}
else
{    
    //Add account to database
    $stmt = $conn->prepare("INSERT INTO users (login, password, email, gender) VALUES (?, ?, ?, ?)");
    $stmt->bind_param('ssss', $login, $md5pass, $email, $gender);
    $stmt->execute();
    $stmt->close();
    echo "<font color=\"#254117;\">Your account is succesfully geregistered! <br />U can now login!</font>";
}

我收到此错误:

警告:mysqli :: prepare()[mysqli.prepare]:无法在第44行的C:\\ xampp \\ htdocs \\ cammerta \\ registreer.php中获取mysqli

致命错误:在第45行的C:\\ xampp \\ htdocs \\ cammerta \\ registreer.php中的非对象上调用成员函数bind_param()

我希望有人可以提供解决方案并向我解释我做错了什么。 提前致谢!

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$stmt->execute();

1.请在phpmyadmin或任何程序中运行查询

2.也许你没有设置变量。 $ login,$ md5pass,$ email,$ gender

$ stmt = $ conn-> prepare语句可能返回false。请使用给定的代码来获取查询错误。

if ($stmt = $conn->prepare('your query')) {
    $stmt->bind_param(...);

}
else {
    printf("Error=: %s\n", $conn->error);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM