2015-11-09 56 views
1

这是我的代码,但我得到一个SQL语法错误;PHP中的CONCAT SQL查询

$insert = "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '".$area1."')"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '".$area2."')"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '".$area3."')"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '".$area4."')"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '".$area5."')"; 

执行此查询的正确方法是什么?

回答

3

插入多个元组时,这是所使用的符号。

$insert = "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '".$area1."')"; 
$insert .= ", (NULL, '".$area2."')"; 
$insert .= ", (NULL, '".$area3."')"; 
$insert .= ", (NULL, '".$area4."')"; 
$insert .= ", (NULL, '".$area5."')"; 
$insert .= ";"; 

提供多个INSERT子句建议单独查询;这可能是可以接受的,这取决于MySQL库,但是每个都需要被;终止。

这就是说,你真的应该使用参数化查询。当prepare d时,它们的速度通常与此相当(在一些较大的散装插入物之外)。

+0

工作一种享受,将授予矮子! –

0

您只需指定列名一次,然后用逗号分隔值。例如

INSERT INTO学生(姓名,年龄) VALUES ( '约翰福音',10), ( '鲍勃',10), ( '杰里米',10);

因此,只需替换 “INSERT IGNORE INTO locations(location_id,location_name)VALUES”除第一个用逗号“;”之外的所有语句,并且还在末尾插入分号。

0

使用此SQL语法(使用;):

$insert = "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '$area1');"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '$area2');"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '$area3');"; 
$insert .= "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '$area4');"; 

或者

$insert = "INSERT IGNORE INTO locations (location_id, location_name) VALUES (NULL, '$area1')"; 
$insert .= ", (NULL, '$area2')"; 
$insert .= ", (NULL, '$area3')"; 
$insert .= ", (NULL, '$area4');";