我不能为我的生活找出为什么PHP抱怨以下内容:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
代码:
while($row = $rbh->fetchAssoc($rbhSQL)) {
$statsSQL = $stats->query("INSERT INTO usage (user, grp, type, size, blocks, count, filesystem) VALUES ($row['owner'], $row['gr_name'], $row['type], $row['size'], $row['blocks'], $row['count'], \"$fsName\") ON DUPLICATE KEY UPDATE size=$row['size'], blocks=$row['blocks'], count=$row->['count']");
}
我错过了什么?
答案 0 :(得分:2)
将变量注入字符串时,数组值将引用without single quotes around the key。
这是有效的:
... VALUES ($row[owner], $row[gr_name], ...
然而,首选的目的是改为使用parameterized query,这有很多好处:
如果这不是SQL查询,我仍然建议使用sprintf
而不是直接注入所有这些变量。