0

问题很简单。

我有什么,有什么问题?
我确实有二维数组$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]在查询中使用类似数组,它也可以在没有它们的情况下工作。

4

2 回答 2

2

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

解决方案:

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

就像@barmar提到的括号也有效

附带说明一下,确保您对数据进行转义以确保防止 SQL 注入!

于 2013-02-04T22:45:30.063 回答
2

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

$result = mysql_query("SELECT some from table where date='{$someArray['date'][0]}' AND subject='{$someArray['subject'][0]}') or die(mysql_error());
于 2013-02-04T22:45:38.107 回答