Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 $\会话查询差异_Php_Session - Fatal编程技术网

Php $\会话查询差异

Php $\会话查询差异,php,session,Php,Session,我只是想知道这个查询之间的区别是什么: $query = "SELECT * FROM users WHERE id='".$_SESSION['mysql_result_id']."'"; 并制作一个如下的变量: $mysql_result_id = $_SESSION['mysql_result_id']; $query = "SELECT * FROM users WHERE id='".$mysql_result_id."'"; 两者看起来很相似,但第二个不起作用。如果我只需要会话

我只是想知道这个查询之间的区别是什么:

$query = "SELECT * FROM users WHERE id='".$_SESSION['mysql_result_id']."'";
并制作一个如下的变量:

$mysql_result_id = $_SESSION['mysql_result_id'];
$query = "SELECT * FROM users WHERE id='".$mysql_result_id."'"; 

两者看起来很相似,但第二个不起作用。如果我只需要会话的值,为什么还要连接呢?假设我的
$\u会话['mysql\u result\u id']
中存储的值是
'2'
,它是否与说
id=2
相同?为什么我必须连接它?为什么我不能把
“WHERE id=$mysql\u result\u id”

这就像是在问:

mysql_query("select now() from dual");
以及:


这只是毫无理由地浪费内存。

您正在函数外部初始化变量

$mysql_result_id = $_SESSION['mysql_result_id'];
此变量超出了函数的作用域,而$\u会话不在。这就是它不起作用的原因。在这里阅读

如果你想让方法2起作用,那么你必须移动它

$mysql_result_id = $_SESSION['mysql_result_id'];
在你的函数中(你只是把它粘贴在你的问题中,然后删除)


回答第二个问题:不必用引号括起数值

他写了第二个对他不起作用…是的,第二个不起作用。但是第一个,是的。这是我的问题。显示更多的代码,问题中的代码应该可以工作,错误在其他地方,有一些不太精细的方法将变量插入双引号字符串中。还有更简单的方法向SQL查询添加输入(搜索“准备好的语句”)。尝试
echo$query
second query并检查其结果是什么?我得到值2,在使用第二个概念之前,一切都正常。这是$query=“SELECT*FROM users WHERE id=”$mysql\u result\u id。“”;不,如果回显$query,则不会得到值2。将
echo$query
放在
$query=“SELECT*FROM users WHERE-id=”“$mysql\u result\u id.”的后面我得到了类似的结果,你自己去试试吧,可爱的家伙!谢谢
$mysql_result_id = $_SESSION['mysql_result_id'];