好的,举个例子:
$array['key'] = 'value';
$SQL = "SELECT column FROM table WHERE column='{$array[key]}'";
这就是我一直在做的,但当然如果我要启用E_ALL错误报告,我会注意到使用未声明的常量,它会假设'key'而不是常量。
因此,我认为这不是正确或更有效的方法,那么最有效的SQL查询(或其他相关字符串)方式是什么?
答案 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