使用户能够对自己的数据进行排序。比方说,我在每一行都有多个动物,并拥有自己的Uniqe Id。然后我让用户用从1到x的数字对动物进行排序。 所以要做到这一点,我必须更新我的sql-table中的多行。我做了Id
uniqe。然后,我试过这个SQL句(这是什么SQL是试图跑,我实际的PHP代码是下面这段代码)更新多行给出错误,尝试使用重复键
INSERT INTO boka_homeworktasks (Id,Sort) VALUES (29 ,1),(38 ,2),(30 ,3),(31 ,4),(32 ,5),(33 ,6),(34 ,7),(35 ,8),(36 ,9),(37 ,10),(39 ,11),(40 ,12),(41 ,13),(42 ,14),(43 ,15),(44 ,16),(45 ,17) ON DUPLICATE KEY UPDATE Sort=VALUES(1),Sort=VALUES(2),Sort=VALUES(3),Sort=VALUES(4),Sort=VALUES(5),Sort=VALUES(6),Sort=VALUES(7),Sort=VALUES(8),Sort=VALUES(9),Sort=VALUES(10),Sort=VALUES(11),Sort=VALUES(12),Sort=VALUES(13),Sort=VALUES(14),Sort=VALUES(15),Sort=VALUES(16),Sort=VALUES(17);
其实我的代码看起来是这样的:
$arrsorter = $_POST["sorter"];
for ($x=0;$x < count($arrsorter);$x++){
$sql_sentence .= '(?,' . ($x + 1) . '),';
array_push($arrparams, $arrsorter[$x]);
$sql_sentence2 .= 'Sort=VALUES('. ($x + 1) .'),';
}
$sql_sentence = 'INSERT INTO boka_homeworktasks (Id,Sort) VALUES '. substr($sql_sentence,0,-1) .' ON DUPLICATE KEY UPDATE '. substr($sql_sentence2,0,-1) . ';' ;
$sql = $conn->prepare($sql_sentence);
$sql->bind_param(str_repeat("i", count($arrparams)), ...$arrparams);
$sql->execute();
我得到这个错误:
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in myfile.php:35 Stack trace: #0 {main} thrown in myfile.php on line 35
35号线是$sql->bind_param(str_repeat("i", count($arrparams)), ...$arrparams);
我看不到任何东西我做错了,你能吗?为什么不能更新我的桌子?