如何将二维数组放入php中的mysql_query中



问题很简单。

我有什么问题
我确实有二维数组$someArray[][]。第一个括号我可以放"主题"或"日期"。第二个,从1到4(只是一个例子-$someArray['date'][0]

现在,当我尝试用mysql_query()从数据库中获取一些数据时,我遇到了一些问题。我正试图在查询的WHERE部分使用这个二维数组。

举例说明哪些有效,哪些无效
$result = mysql_query("SELECT some from table where date='$someArray[date][0]' AND subject='$someArray[subject][0]') or die(mysql_error());

当我使用这个时,它不会给我任何回报。但当我第一次将这些值代入新变量时:

$variable1 = $someArray['date'][0];
$variable2 = $someArray['subject'][0];

然后在查询中使用它们

`$result = mysql_query("SELECT some from table where date='$variable1' AND subject='$variable2') or die(mysql_error());

它就像一个符咒。

问题
我的第一个查询出了什么问题,我写错了那些数组吗?我没有任何错误
在mysql查询中,我尝试将单撇号放在[]括号内,但后来确实出现了错误。如果我在查询中使用类似于:$someotherArray[somedata]的数组,它也可以在没有它们的情况下工作。

数组插值仅适用于单一级别的下标。对于多维数组,您需要使用{...}包装器:

$result = mysql_query("SELECT some from table where date='{$someArray['date'][0]}' AND subject='{$someArray['subject'][0]}') or die(mysql_error());

查询中的语法缺少双引号。并插入字符串,而不是仅将其添加到其中。字符串解析器不喜欢多维数组。

解决方案:

$result = mysql_query("SELECT some from table where date='".$someArray[date][0]."' AND subject='".$someArray[subject][0]."'") or die(mysql_error());

就像@barmar提到的括号也适用于

顺便说一句,请确保对数据进行转义,以确保SQL注入被阻止!

相关内容

  • 没有找到相关文章