Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
Php 在MySQL查询中使用函数_Php_Mysql_Function_Md5 - Fatal编程技术网

Php 在MySQL查询中使用函数

Php 在MySQL查询中使用函数,php,mysql,function,md5,Php,Mysql,Function,Md5,我有以下代码行: 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) { gl

我有以下代码行:

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散列)


为什么第二个查询不起作用?

MySQL无法访问您在PHP中定义的函数。您只能使用MySQL在MySQL查询中定义的函数,或使用SQL编写的函数。您必须重新考虑您正在做什么,并以一种不需要MySQL使用PHP函数的方式来表达它

PHP中的函数和MySQL中的函数是两个不同的东西


在发送MySQL查询时,MySQL将负责解析您发送的字符串。MySQL不知道您编写的任何PHP代码,反之亦然。

这不是很容易做到的:

$saltinput = salt($input_name)
mysql_query("SELECT name FROM details WHERE salt(name) = '$salitinput'");

我不认为salt是一个MySQL函数,你不是想做一个SHA,然后将salt添加到字符串中吗?是的,salt()是我自己定义的一个函数-如问题中所述,你创建了一个PHP函数而不是MySQL函数。另外,您不是在尝试将列与值匹配吗?它不应该是“WHERE name=”。salt($input_name)。“”“
WHERE MD5()=MD5()
实际上毫无意义。让我猜猜,您刚刚学习了哈希和盐析,并试图将其追溯添加到您的系统中?那么你就完全错了。然后转义你的值或使用准备好的语句,这是处理SQL注入的常用方法。为每个查询对整个数据库进行哈希运算是非常浪费的。谢谢您的回复。但是md5()不是一个PHP函数吗?我们是如何正确使用它的?
MD5()
也恰好是MySQL中定义的一个函数。正如deceze所提到的,不能从MySQL中调用salt(name),因为我使用PHP定义了它