PHP中的CONCAT SQL查询


CONCAT SQL Query in PHP

这是我的代码,但我得到了一个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."')";

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

插入多个元组时,这是所使用的表示法。

$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时,它们的速度通常与此相当(在一些较大的大块插入物之外)。

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

插入学生(姓名、年龄)值("约翰",10),(Bob,10),("Jeremy",10岁);

所以只要更换在所有语句中插入"INSERT IGNORE INTO locations(location_id,location_name)VALUES",第一个语句除外,并在末尾插入分号。

USE此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');";