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

时间:2013-02-04 22:40:22

标签: php mysql arrays multidimensional-array

简单的问题。

我拥有什么,有什么问题?
我有二维数组$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]的数组,它也可以在没有它们的情况下工作。

2 个答案:

答案 0 :(得分:2)

查询中的语法缺少结束双引号。并且连接字符串而不是仅仅添加它。字符串解析器不喜欢数组,多维。

解决方案:

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

和@barmar一样,提到括号也可以工作

另请注意,请确保转义数据以确保阻止SQL注入!

答案 1 :(得分:2)

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

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