好吧,举个例子:
$array['key'] = 'value';
$SQL = "SELECT column FROM table WHERE column='{$array[key]}'";
这就是我一直在做的事情,但当然,如果我要启用 E_ALL 错误报告,我会收到有关使用未声明常量的通知,它会假定“键”而不是常量。
因此,我认为这不是正确或更有效的方法,那么执行该 SQL 查询(或其他相关字符串)的最有效方法是什么?
实际上,如果您查找 PHP 字符串引用规则,如果您省略了内部键周围的引号{}
,它将被解释为一个常量。但是,如果省略{}
和 引号,则将正确解释简单的数组索引,而不会发出通知。
PHP双引号字符串解析规则(相关示例在变量解析部分)
{}
为了可读性,我倾向于使用周围:
// 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,而不是在变量中连接
您需要引用密钥。
$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";
我总是喜欢这样做:
$SQL = "SELECT column FROM table WHERE column='".$array['key']."'";
我从来没有遇到过麻烦。
如果您重新使用 sql,绑定将是一个优势:
http://nz.php.net/manual/en/pdostatement.bindparam.php
高温高压