0
$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 查询时,我都会遇到语法错误:

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

我该如何解决这个问题?谢谢你。

4

5 回答 5

2

a) 看一下PDO(特别是准备好的语句),您可能仅通过使用变量就容易受到 SQL 注入的攻击

b)如果您只想修复该部分:

$query = "INSERT INTO users (full_name) VALUES ('".$names["full-name"]."')";
于 2012-04-30T03:36:07.573 回答
2

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

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

在变量/数组索引周围添加{}大括号允许您引用它,就像它在字符串之外一样。该{}符号还允许您在字符串中嵌入多维数组,例如

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

通常会被 PHP 视为数组$x[1]后跟文字[2]文本,因为它的数组解析不是“贪婪”的。但是在整个数组引用中加上大括号会强制 PHP 解析整个事情。

于 2012-04-30T03:53:13.120 回答
0

-变量中有 a 是无效的。改用_a

于 2012-04-30T03:34:13.597 回答
0
$query = "INSERT INTO users (full_name) VALUES ('".$names[full-name]."')";
于 2012-04-30T03:35:03.127 回答
0

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

于 2012-04-30T03:40:36.183 回答