我想用php中的sqli在我的users表上执行select查询。 出于安全原因(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]:无法获取mysqli 第44行的C:\ xampp \ htdocs \ cammerta \ registreer.php
致命错误:在非对象中调用成员函数bind_param() 第45行的C:\ xampp \ htdocs \ cammerta \ registreer.php
我希望有人能提供解决方案并向我解释我做错了什么。 提前谢谢!
答案 0 :(得分:0)
$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
答案 1 :(得分:0)
$ stmt = $ conn-&gt; prepare语句可能返回false。请使用给定的代码来获取查询错误。
if ($stmt = $conn->prepare('your query')) {
$stmt->bind_param(...);
}
else {
printf("Error=: %s\n", $conn->error);
}