Php 具有空值的MySQL插入错误

Php 具有空值的MySQL插入错误,php,mysql,Php,Mysql,因此,我尝试使用下面的代码将数据从包含多个数组的数组插入MySQL表,这些数组包含表中每一行的数据: if (is_array($tbl_data)){ $sql = "INSERT INTO teshsting (agent, event , data1,data2,data3,data4,data5) values "; $arrayValues = array(); foreach ($tbl_data as $row){ $agent = mysql_real_escape

因此,我尝试使用下面的代码将数据从包含多个数组的数组插入MySQL表,这些数组包含表中每一行的数据:

if (is_array($tbl_data)){
$sql = "INSERT INTO teshsting (agent, event , data1,data2,data3,data4,data5) values ";  
$arrayValues = array();
foreach ($tbl_data as $row){

    $agent = mysql_real_escape_string($row[0]);
    $event = mysql_real_escape_string($row[1]);
    $data1 = mysql_real_escape_string($row[2]);
    $data2 = mysql_real_escape_string($row[3]);
    $data3 = mysql_real_escape_string($row[4]);
    $data4 = mysql_real_escape_string($row[5]);
    $data5 = mysql_real_escape_string($row[6]);

    $value = "($agent,$event,$data1,$data2,$data3,$data4,$data5)";
    array_push($arrayValues, $value);
}   
$sql .=implode(',', $arrayValues);
使用
var\u dum($sql)
快速检查会产生以下结果:

INSERT INTO teshsting (agent, event , data1,data2,data3,data4,data5) values (NONE,QUEUESTART,,,,,)/////
上述Sql无效,因为此处有多个逗号:
(无,QUEUESTART,,,,)
,它们是由空字段生成的。如何在查询中插入单个引号以使其有效?i、 请输入正确的sql语法:

INSERT INTO teshsting (agent, event , data1,data2,data3,data4,data5) values (NONE,QUEUESTART,'','','','','')
要么:

$data1 = "'" . mysql_real_escape_string($foo) . "'";


只是不要同时尝试这两个选项,这会给你
(…,'$data1'',…)
,并用语法错误终止查询。

感谢这种修复方法,但我遇到了另一个我不确定的错误。为什么
值是本地的/120@disc-代理/n,ADDMEMBER,'','','','')
导致sql语法错误?是否
本地/120@disc-代理/n
对您来说似乎是一个有效的字段名?我正在插入字符串
local/120@disc-代理/n
它不是字段名。然后在其周围加引号<代码>插入。。。values(Foo)告诉db使用
Foo
字段中的任何值,这没有意义,因为首先没有可从中获取该值的现有记录<代码>插入。。。值('Foo')只是一个字符串,其中包含字母
F
o
o
$value = "(...,'$data1',...)";