SQL UPDATE不更新

时间:2015-10-16 00:40:35

标签: mysql database

上传csv文件后,我试图将其内容插入到我的数据库表中。我有这个问题:

$connect = mysql_connect("localhost","root",""); 
mysql_select_db("dbtest",$connect);

//get the file 
$handle = fopen($filename,"r");

do { 
    if (isset($data[0])) { 
        $data0  =   mysql_real_escape_string($data[0]);  //rcode
        $data1  =   mysql_real_escape_string($data[1]);  //pcode
        $data2  =   mysql_real_escape_string($data[2]);  //mcode
        $data3  =   mysql_real_escape_string($data[3]);  //bcode
        $data4  =   mysql_real_escape_string($data[4]);  //ecode
        $data5  =   mysql_real_escape_string($data[5]);  //filetype
        $data6  =   mysql_real_escape_string($data[6]);  //rec_count
        $data7  =   mysql_real_escape_string($data[7]);  //gen_count
        $data8  =   mysql_real_escape_string($data[8]);  //qc_count
        $data9  =   mysql_real_escape_string($data[9]);  //be_count
        $data10 =   mysql_real_escape_string($data[10]); //trn_count

$query = "INSERT INTO tbltest(rcode,pcode,mcode,bcode,ecode,filetype,rec_count,
          gen_count,qc_count,be_count,trn_count) VALUES ('$data0','$data1','$data2',
          '$data3', '$data4', '$data5', '$data6', '$data7', '$data8', '$data9', '$data10') 
          ON DUPLICATE KEY UPDATE rec_count=values(rec_count),gen_count=values(gen_count),
          qc_count=values(qc_count), be_count=values(be_count), trn_count=values(trn_count)";

mysql_query ($query,$connect) ;
    }
} while ($data = fgetcsv($handle,1000,"|"));

它工作得很整齐,但随后数据库被重新构建,我只需要更新数据库表,因为rcode to filetype已经有值,我只需要插入值{{1 }}。因此,我的第一个查询rec_count to trn_count仅更改为INSERT INTO ... ON DUPLICATE KEY UPDATE。所以我这样做了:

UPDATE

我现在的问题是,我的$query = "UPDATE tbltest SET (rec_count='$data6', gen_count = '$data7', qc_count = '$data8', be_count = '$data9', trn_count= '$data10') WHERE (rcode = '$data0', pcode = '$data1', mcode = '$data2', bcode = '$data3', ecode = '$data4', filetype = '$data5')"; 似乎没有工作,因为它没有更新数据库表。我这样做的时候是这样的;

UPDATE

正在更新数据库。当我尝试$query = "UPDATE tbltest SET rcode = '5'"; 时,回应响应正确的数据(来自csv)。我无法理解为什么它不会将这些数据插入数据库。请帮助。感谢

1 个答案:

答案 0 :(得分:0)

您的SQL语法不正确。该陈述应该是类似

的内容
UPDATE tbltest
SET rec_count='...', gen_count = '...', ... 
WHERE rcode = '...' AND pcode = '...' AND ...

请参阅MySQL UPDATE syntax