我正在使用mysql或mysqli的password()函数在SELECT查询中对用户进行身份验证。
select * from users where u_name='$username' and u_pword = password('$password');
我想将这个内容转换成带参数的预处理语句(prepared statement),但如何处理
password()
函数呢?password()
函数是放在预处理语句中,例如password(?)
,还是放在参数中,例如password($var)
?我之前遇到过类似的问题(Convert from mysqli_query to mysqli prepared statement using mysql PASSWORD function),但没有得到答案。
这可能是一个普遍的问题,也许是时候再次提出了。有人能提供帮助吗?
自MySQL 5.7.6起,此函数已被弃用,并将在未来的MySQL版本中删除。
http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_password然而我不知道如何使用带参数的查询来使用mysql函数。如果你在绑定值中使用`'password( ' . $password . ')',它只会被视为字符串引用。还请注意,
PASSWORD()`由MySQL服务器中的身份验证系统使用;你不应该在你自己的应用程序中使用它。 - chris85Table
where name = md5(?)`。 - chris85?
作为占位符。您认为PASSWORD()
的参数与查询的其他部分有什么不同吗? - Barmar