在PHP/MySQLi
中,我在尝试在for
循环内执行语句时收到此错误。这是我迄今为止一直在努力的功能:
function delete_article($id)
{
$move = "INSERT INTO deleted SELECT * FROM article WHERE id='$id'";
$delete = "DELETE FROM article WHERE id='$id'";
if($this->mysqli->query($move))
{
// Only attempt delete if move was possible.
if($this->mysqli->query($delete))
{
// Nothing.
}
}
if($this->mysqli->errno)
echo $this->mysqli->error . "<br/>";
}
当按以下方式调用时,此函数按预期工作:
if($_POST['delete_article_id'] && isset($_POST['delete_article_id']))
{
$this->db->delete_article($_POST['delete_article_id']);
exit(header("Location: " . __MANAGER__));
}
当以这种方式使用时,此功能停止工作(这种方式产生错误):
function delete_manager_articles($articles) // Take multiple IDs as STRING.
{
$make_array = explode(",", $articles); // Convert into array of IDs.
for($i = 0; $i < count($make_array); $i++)
{
if($make_array[$i] == "" || $make_array[$i] == null)
{
// Remove empty array elements if present.
unset($make_array[$i]);
}
else
{
// Else remove string prefix "article_check_" leaving ID only.
$make_array[$i] = str_replace("article_check_", "", $make_array[$i]);
$this->delete_article($make_array[$i]);
}
}
}
为什么在以这种方式使用函数时会出现此错误?我可以保证str_replace()
函数与数据库中的ID完全匹配后剩下的ID。
答案 0 :(得分:0)
可能因为select在该点没有返回任何内容,因此insert into select将无效。可以帮助调试,选择返回任何东西。找出它中断的id(假设收到的所有参数都是正确的)并手动运行select。
修改强>
如下所述,这个答案是错误的。