我在SELECT查询中使用mysql或mysqli password()函数对用户进行身份验证。 即
select * from users where u_name='$username' and u_pword = password('$password');
我想将其转换为带参数的预备语句。如何在预准备语句中处理password()
函数? password()函数是否包含在预准备语句中,例如密码(?)或参数如,例如密码($ VAR)。
我之前看到过类似的问题(Convert from mysqli_query to mysqli prepared statement using mysql PASSWORD function),但仍然没有答案。
这一定是一个常见的问题,也许是时候再次提出它了。有人能帮忙吗?
答案 0 :(得分:0)
我需要更多的代码,你应该做类似的事情
<?php
$link = new mysqli( /* connect */);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno .") "$mysqli->connect_error;
}
/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare("SELECT * FROM `users` WHERE u_name=? AND u_pword=password(?)"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$stmt->bind_param("ss", $username, $password )) {
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
?>
希望它有所帮助。如果是,请接受答复。 无论如何,正如有人建议的那样,你不应该使用PASSWORD()函数,而且,我会继续说你应该使用PDO。这是值得的。只要SQL兼容,切换数据库非常容易。即使它没有,仍然相对容易。