$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 查询时,我都会遇到语法错误:
解析错误:语法错误、意外的"-"、预期"]"
我该如何解决这个问题?谢谢。
由于尚未
提及,因此这是另一种替代语法:
$query = "INSERT INTO users (full_name) VALUES ('{$names['full-name']}')";
在变量/数组索引周围添加{}
大括号允许您像在字符串之外一样引用它。{}
表示法还允许您在字符串中嵌入多维数组,例如
echo "$x[1][2]";
通常被视为数组$x[1]
后跟 PHP 的文字[2]
文本,因为它的数组解析不是"贪婪的"。但是把大括号放在整个数组引用中,迫使PHP解析整个事情。
a) 看看 PDO(专门准备的语句),您可能很容易通过简单地使用变量来攻击 SQL 注入
b) 如果你只是想修复那块:
$query = "INSERT INTO users (full_name) VALUES ('".$names["full-name"]."')";
$query = "INSERT INTO users (full_name) VALUES ('".$names[full-name]."')";
('$names[full-name]')
应该更改为('$names['"full-name'"]')
变量
中有-
是无效的。改用_