2014-05-22 34 views
0

我有一个名为sales的mysql数据库表,其中列id | timeStamp | timeString | EAN,如果ID尚不存在于表格中,我想插入新值。如果ID“9997a04fe3f932bf6f8e9d88f4b8dc96”尚未进入前SQL只向MYSQL表中插入一个新行,如果id不存在

9997a04fe3f932bf6f8e9d88f4b8dc96 | 0000003082461 | 11:07 (Thu. 22 May. 2014 | 1400716800 

到数据库表:比如我可能需要添加。

到目前为止,我已经写的SQL看起来是这样的:(使用1234为虚值,已经有在表中的行与和11D)

INSERT INTO `sales`(`id`, `timeStamp`, `timeString`, `EAN`) VALUES (1,2,3,4) 
    WHERE NOT EXISTS (
     SELECT `id` FROM `sales` WHERE `id` = '1' 
    ) 

请帮我得到这个SQL声明工作。目前,此报告的语法错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT `id` FROM `sales` WHERE `id` = 1 ' at line 2 
+0

为什么你试图在PHP这样做在SQL UND不是(读取记录与标识,如果不存在将其插入)。 – Jens

+2

你不能在插入where子句。您可以使用INSERT ... ON DUPLICATE KEY http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html或INSERT IGNORE –

+0

如果有记录,您希望发生什么已经?只需完全跳过插入,或更新一些值? – Cylindric

回答

0

您需要检查是否存在或并不对该等数据的INSERT语句之前。如果退出只是给用户数据的消息已经存在或任何你想要的。

像这样

 $result = mysqli_query ($con,"SELECT COUNT(id) FROM sales WHERE (id='$id')"); 
    $row = mysqli_fetch_row($result); 
    $total_records = $row[0]; 
    if($total_records == 0) 

    { 
     INSERT INTO sales(`id`, `timeStamp`, `timeString`, `EAN`) VALUES   
     ($id,$timestamp,$timestring,$Ean); 

     } else 
     { 
      --------------Enter----- 
      ------------Error message------ 
     } 
4

添加唯一索引ID列,然后使用INSERT语句忽略

相关问题