PDO多重执行问题

时间:2013-03-16 07:58:40

标签: php mysql pdo

我在处理页面上有两个插入。第一个工作毫无障碍。第二个甚至不会激活。我甚至试过放一个PDO查询来查看它是否可行但仍然没有。

        $cpinsert = $db->prepare('insert into Chatposts values (0, :chatid, :name, :url, :text, now(), :ipaddress, 0)');

        $cpinsert -> bindParam(':chatid', $chatroomid, PDO::PARAM_INT);
        $cpinsert -> bindParam(':name', $name, PDO::PARAM_STR);
        $cpinsert -> bindParam(':url', $url, PDO::PARAM_STR);
        $cpinsert -> bindParam(':text', $text, PDO::PARAM_STR);
        $cpinsert -> bindParam(':ipaddress', $ipaddress, PDO::PARAM_STR);


            $cpinsert -> execute();

        // Needs an error checker
        $cpid = $cpinsert ->lastInsertID();
        $cpinsert->closeCursor();

^虽然我不知道lastinsertid因为我无法测试它,但工作正常。

\ V /无论我尝试什么,都不会执行任何内容。有什么东西阻止执行任何东西,或者我没有正确关闭上面的连接。

    // Targets Insert
    //if (isset($target)):
    $query = "insert into Targets values (9,'rommel')";
    $db->query($query);
        $targetinsert = $db->prepare('insert into Targets values (:cpid,:tname)');


        foreach ($target as $tname):
            $targetinsert -> bindParam(':cpid', $cpid, PDO::PARAM_INT);
            $targetinsert -> bindParam(':tname', $tname, PDO::PARAM_STR);
        endforeach; 


            $targetinsert -> execute();

    //endif;

我已经尝试过所有我知道但没有运气的事情。因为我是PDO的新手,所以我很可能犯了一个小错误。当我添加它时,Closecursor似乎没有做任何事情。

2 个答案:

答案 0 :(得分:0)

您说您需要执行许多插入,但由于某种原因,您只执行一次的查询。

此外,请从您的代码中删除这些try..catch内容 - 它们 之所以您不知道出现了什么问题

答案 1 :(得分:-2)

我不得不重新创建我的页面的半功能模型,但我发现了问题,它是lastinsertid()。我在PDO类上应用了一个PDOstatement类。

在:

 $cpid = $cpinsert->lastInsertID();

后:

 $cpid = $db->lastInsertID();

我只需要调用数据库而不是使用该行代码进行准备。