Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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_Session Variables - Fatal编程技术网

Php mysql查询中的会话变量

Php mysql查询中的会话变量,php,mysql,session-variables,Php,Mysql,Session Variables,是否可以在mysql的INSERT和SELECT语句中使用$\u SESSION[var],如下所示 $query = "INSERT INTO table1 (id, var1, var2) VALUES (NULL, '$_SESSION[var1]', '$_SESSION[var2]')"; mysql_query($query); die(mysql_error()); 注意:我已经开始了会话;在我所有页面的开头。是。在我看来,在插值字符串中指定数组变量的最

是否可以在mysql的INSERT和SELECT语句中使用$\u SESSION[var],如下所示

$query = "INSERT INTO table1 (id, var1, var2)
            VALUES (NULL, '$_SESSION[var1]', '$_SESSION[var2]')";
mysql_query($query);
die(mysql_error()); 

注意:我已经开始了会话;在我所有页面的开头。

是。在我看来,在插值字符串中指定数组变量的最佳方法是在其周围放上花括号,以便在数组键周围使用单引号:

$query = "INSERT INTO table1 (id, var1, var2)
              VALUES (NULL, '{$_SESSION['var1']}', {$_SESSION['var2']}')";
最好在对其执行查询之前:

$var1 = mysql_real_escape_string($_SESSION['var1']);
$var2 = mysql_real_escape_string($_SESSION['var2']);

$query = 
    "INSERT INTO table1 (id, var1, var2) " .
    "VALUES (NULL, '" . $var1 . "', '" . $var2 . "')";

mysql_query($query) or die(mysql_error()); 
请注意,无论是否发生错误,最后一行代码DIEU错误都会导致脚本停止执行


此外,您可能还需要查看数据库交互。

您想做什么?也许它能帮助我们更好地回答你的问题。你需要为什么插入$_会话?这是一个两页的提交过程,第二个取决于第一组用户输入变量的值,而且两个表单不在同一页上,因为第二个表单将按班级学生人数的多少连续几次。是的,$\会话变量与其他变量一样。只要使用正确的名称,例如:$\u SESSION而不是$\u SESSIONS,您就会没事的。甚至不知道如何响应。仅仅是对Var的性质一无所知的性质就足以安全地逃脱。我从未使用过与数据库交互无关的故意转义字符串的应用程序。我之所以指出这一点,是因为我厌倦了看到基于经验规则而非实际知识编写的代码。人们应该理解为什么他们调用函数,而不仅仅是因为他们被告知这样做。此外,mysql\u real\u escape\u字符串可能是我见过的最丑的东西。如果您想阻止SQL注入,请使用PDO和prepared语句,而不是这个。等等,我的解决方案受到了惩罚b/c OP选择使用mysql_query vs PDO?我同意你的观点,我在不使用ORM原则时也使用PDO,但我只是向作者展示了他们可能想采取额外的步骤来保护他们的数据库。我删除了否决票,但我仍然认为应该给出清理VAR的建议,并作进一步解释。通过php.net链接函数描述,希望作者看一下。是的,我只是复制并粘贴了他的代码,没有注意到他有额外的S,但我会修复。额外的S本来就不在那里。当我运行查询时,我得到了var1和var2session变量的未定义索引,这些变量是通过赋值给$\u SESSION创建的。这就是处理php会话的方式。如果需要,可以创建名为$\u SESSIONS的数组变量,但它不是会话变量。您的代码可能还有其他问题-您只提供了一个片段,我们必须假设您以前为$\u会话['var1']和$\u会话['var2']赋值。如果这不起作用,您就有问题,我们只能猜测。谢谢您的帮助,但我仍然得到未定义的索引,即会话使用的点。我在表单$var1=$\u POST['var1']的第一页上做了这项工作$_会话['var1']=$var1;然后在我需要会话的第二页,在mysql查询中使用它,我得到了未定义的索引。