1

好吧,举个例子:

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

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

这就是我一直在做的事情,但当然,如果我要启用 E_ALL 错误报告,我会收到有关使用未声明常量的通知,它会假定“键”而不是常量。

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

4

3 回答 3

6

实际上,如果您查找 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,而不是在变量中连接

于 2012-05-11T02:49:01.587 回答
1

您需要引用密钥。

$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";
于 2012-05-11T02:48:14.147 回答
1

我总是喜欢这样做:

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

我从来没有遇到过麻烦。

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

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

高温高压

于 2012-05-11T02:52:59.960 回答