涉及连字符的PHP MySQL语法错误

时间:2012-04-30 03:31:39

标签: php mysql

$names = array();
$names['full-name'] = 'John Doe';

$query = "INSERT INTO users (full_name) VALUES ('$names[full-name]')";
$result = mysql_query($query) or die(mysql_error());

每当我尝试使用包含连字符的数组键创建mysql查询时,我都会遇到语法错误:

解析错误:语法错误,意外' - ',期待']'

我怎么能解决这个问题?谢谢。

5 个答案:

答案 0 :(得分:2)

a)看一下PDO(特别准备的语句),你可能只是通过简单地使用变量来攻击SQL注入

b)如果你只想修复那件作品:

$query = "INSERT INTO users (full_name) VALUES ('".$names["full-name"]."')";

答案 1 :(得分:2)

由于尚未提及,这是另一种替代语法:

$query = "INSERT INTO users (full_name) VALUES ('{$names['full-name']}')";

在变量/数组索引周围添加{}括号,可以像在字符串之外那样引用它。 {}表示法还允许您在字符串中嵌入多维数组,例如

echo "$x[1][2]";

通常会被PHP视为数组$x[1],后跟文字[2]文本,因为它的数组解析不是“贪婪”。但是将整个数组引用括起来支持PHP解析整个事情。

答案 2 :(得分:0)

变量中包含-无效。请改用_

答案 3 :(得分:0)

$query = "INSERT INTO users (full_name) VALUES ('".$names[full-name]."')";

答案 4 :(得分:0)

('$names[full-name]')应更改为('$names[\"full-name\"]')