在我的脚本中,我遍历一个数组并从中创建一个INSERT INTO字符串,其中包含多个值。执行时我收到此错误:
.. right syntax to use near 'INSERT INTO
如您所见,PHP在字符串前面添加了一个奇怪的字符。该字符串使用
创建$sql = "INSERT INTO table(`ItemID`, `Quantity`) VALUES ";
foreach($articles as $item)
{
$sql .= "(".$item['ItemID'].",".$item['Quantity']."),";
}
$sql = substr($sql, 0, -1); // to eliminate the trailing ","
$sql .= ";";
为什么PHP会添加此字符,如何检测并删除它?该文件保存为UTF-8,无BOM。
答案 0 :(得分:1)
您看到的字符可能是误读Byte Order Mark,Unicode字符(U + FEFF)表示哪个endianness用于UTF-16文件。引用Wikipedia:
BOM的UTF-8表示是字节序列
0xEF,0xBB,0xBF
。将文本解释为ISO-8859-1或CP1252的文本编辑器或Web浏览器将为此显示字符
。
虽然您的PHP 文件可以在没有BOM的情况下轻松保存,但这并不代表您的查询之前没有。但是,如果没有看到$sql
变量如何传递到mysql
,我只会做一些猜测:
mysql_set_charset
或等效字符串)。无论如何,明确地设置客户端和服务器编码是一个好主意。答案 1 :(得分:0)
添加此行为我工作
$string_query = str_replace("\xEF\xBB\xBF", "", $string_query);