PHP / MySQLi错误“列数与第1行的值计数不匹配”

时间:2012-12-31 13:06:42

标签: php model-view-controller mysqli

  

可能重复:
  “Column count doesn’t match value count at row 1”

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。

1 个答案:

答案 0 :(得分:0)

可能因为select在该点没有返回任何内容,因此insert into select将无效。可以帮助调试,选择返回任何东西。找出它中断的id(假设收到的所有参数都是正确的)并手动运行select。

修改
如下所述,这个答案是错误的。