在MySQL语句中使用数组的最有效方法?

时间:2012-05-11 02:45:54

标签: php string

好的,举个例子:

$array['key'] = 'value';

$SQL = "SELECT column FROM table WHERE column='{$array[key]}'";

这就是我一直在做的,但当然如果我要启用E_ALL错误报告,我会注意到使用未声明的常量,它会假设'key'而不是常量。

因此,我认为这不是正确或更有效的方法,那么最有效的SQL查询(或其他相关字符串)方式是什么?

3 个答案:

答案 0 :(得分:6)

实际上,如果查找PHP字符串引用规则,如果省略{}内的键周围的引号,它将被解释为常量。但是,如果省略{}和引号,则可以在不发出通知的情况下正确解释简单的数组索引。

PHP double-quoted string parsing rules(相关的例子在变量解析部分)

为了便于阅读,我更倾向于使用{}

// Inside {}, you must quote the array key or it will be interpreted as a constant
$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";

但这也是有效的,不应发出通知:

// Without {}, don't quote the array key and it will be correctly parsed.
$SQL = "SELECT column FROM table WHERE column='$array[key]'";

请注意将变量传递给SQL查询的最佳方法是使用支持预处理语句而不是在变量中连接的API

答案 1 :(得分:1)

你需要引用密钥。

$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";

答案 2 :(得分:1)

我总是喜欢这样做:

$SQL = "SELECT column FROM table WHERE column='".$array['key']."'";

我从来没有遇到麻烦。

如果重新使用sql,绑定将是一个优势:

http://nz.php.net/manual/en/pdostatement.bindparam.php

HTH