这是我的代码,但我收到了SQL语法错误;
pred: array([ 0, 1, 2, ..., 3, 12, 16], dtype=int64)
true: array([ 0, 1, 2, ..., 3, 12, 16])
执行此查询的正确方法是什么?
答案 0 :(得分: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时,它们的速度通常与此相当(在一些较大的体积插入物之外)。
答案 1 :(得分:0)
您只需要指定一次列名,然后用逗号分隔值。例如
INSERT INTO学生(姓名,年龄) VALUES ('约翰' 10), ('鲍勃' 10), ('杰里米',10);
所以只需更换 " INSERT IGNORE INTO位置(location_id,location_name)VALUES"在所有陈述中,除了第一个用逗号","并在末尾插入半结肠。
答案 2 :(得分: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');";