好吧,以此为例:
$array['key'] = 'value';
$SQL = "SELECT column FROM table WHERE column='{$array[key]}'";
Run Code Online (Sandbox Code Playgroud)
这就是我一直在做的,但当然如果我要启用E_ALL错误报告,我会注意到使用未声明的常量,它会假设'key'而不是常量.
因此,我认为这不是正确或更有效的方法,那么进行SQL查询(或其他相关字符串)的最有效方法是什么?
实际上,如果你查找PHP字符串引用规则,如果省略键内部的引号{},它将被解释为常量.但是,如果省略{}和引号,将在不发出通知的情况下正确解释简单的数组索引.
PHP双引号字符串解析规则(相关示例在Variable Parsing部分中)
为了{}便于阅读,我倾向于选择周围环境:
// Inside {}, you must quote the array key or it will be interpreted as a constant
$SQL = "SELECT column FROM table WHERE column='{$array['key']}'";
Run Code Online (Sandbox Code Playgroud)
但这也是有效的,不应发出通知:
// Without {}, don't quote the array key and it will be correctly parsed.
$SQL = "SELECT column FROM table WHERE column='$array[key]'";
Run Code Online (Sandbox Code Playgroud)
请注意,将变量传递给SQL查询的最佳方法是使用支持预处理语句而不是连接变量的API