我有以下代码行:
mysql_query("SELECT name FROM details WHERE md5(name) = '".md5($input_name)."'");
但是,当我将查询更改为以下内容时,此查询可以正常工作:
mysql_query("SELECT name FROM details WHERE salt(name) = '".salt($input_name)."'");
查询似乎不起作用。
盐功能如下:
function salt ($name) {
global $salt;
return $salt.$name;
}
其中$ salt是一个全局变量(md5哈希)
为什么第二个查询不起作用?
答案 0 :(得分:1)
MySQL无法访问您在PHP中定义的函数。您只能使用MySQL在MySQL查询中定义的函数,或者您在SQL中编写的函数。您将不得不重新考虑您正在做的事情,并以不需要MySQL使用PHP函数的方式表达它。
答案 1 :(得分:0)
PHP中的函数和MySQL中的函数是两个独立的东西。
发送MySQL查询时,MySQL将负责解析您发送的字符串。并且MySQL不知道您制作的任何PHP代码 - 反之亦然。
答案 2 :(得分:0)
这不容易通过以下方式完成:
$saltinput = salt($input_name)
mysql_query("SELECT name FROM details WHERE salt(name) = '$salitinput'");