Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mysql password()函数将mysqli_查询转换为php中的准备语句_Php_Mysql - Fatal编程技术网

使用mysql password()函数将mysqli_查询转换为php中的准备语句

使用mysql password()函数将mysqli_查询转换为php中的准备语句,php,mysql,Php,Mysql,我在SELECT查询中使用mysql或mysqli password()函数对用户进行身份验证。 i、 e 我想将其转换为带有参数的准备语句。如何在准备好的语句中处理password()函数?password()函数是否出现在准备好的语句中,例如password(?)或参数中,例如password($var) 我以前在这里看到过类似的问题(),但它仍然没有得到解答 这一定是一个共同的问题,也许是时候再次提出它了。有人能帮忙吗?我需要更多的代码,你应该这样做 <?php $link = ne

我在SELECT查询中使用mysql或mysqli password()函数对用户进行身份验证。 i、 e

我想将其转换为带有参数的准备语句。如何在准备好的语句中处理
password()
函数?password()函数是否出现在准备好的语句中,例如password(?)或参数中,例如password($var)

我以前在这里看到过类似的问题(),但它仍然没有得到解答


这一定是一个共同的问题,也许是时候再次提出它了。有人能帮忙吗?

我需要更多的代码,你应该这样做

<?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兼容,切换数据库就非常容易。即使不是,它仍然相对容易。

该函数已被弃用,我认为您应该使用PHP哈希函数
从MySQL 5.7.6开始,此函数已被弃用,并将在将来的MySQL版本中删除。
但我不知道如何将MySQL函数用于参数化查询。我想如果您在绑定值中使用了
“password('.$password.')”
,它将被引用为字符串。。另请注意,
PASSWORD()用于MySQL服务器中的身份验证系统;您不应该在自己的应用程序中使用它
表`where name=md5(?)`中选择*谢谢,克里斯,它们是有用的参考。您可以在允许表达式的任何位置使用
作为占位符。为什么您认为
PASSWORD()
的参数与查询的其他部分不同?谢谢您的帮助。此代码与我使用的代码类似,只是添加了错误消息。然而,它不会抛出任何错误消息,或者事实上,它也不会抛出任何结果。我添加了printf(“找到%d行。\n”,$stmt->受影响的行);但是没有返回任何内容。您确定之前使用password()函数存储的密码正确吗?
<?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;
}

?>