PDO - 无法使用类插入数据

时间:2013-11-22 02:17:54

标签: php mysql pdo

我在使用PDO工作时遇到了一些麻烦。我会解释,因为我提供的代码。我不期待一个答案,但我希望有人可以解释我做错了什么,以及正确的解决方案将如何工作。

我正在研究CMS并试图实现MVC模式,因此使用PDO。

以下是我的index.php文件中我们有PDO声明的部分:

<?php
    include_once 'models/USER_mapper.php';

    $USER_mapper = new USER_mapper( 'localhost', 'root', 'root', 'online_magazine' );

    $user = new User();
    $user->setIDUser("JohnnyBoy");

    $USER_mapper->registerUser($user);
?>

在USER_mapper中我有一个connect函数,它在创建一个新的USER_mapper时调用,我还有registerUser()函数,它将一个User对象作为参数,它应该从User对象中插入数据库中的信息使用过的。
下面是registerUser()函数:

public function registerUser($userOBJ) {
    try {
        $q = $this->DBH->prepare ( "INSERT INTO online_magazine.USER_TABLE (id_user, permission) VALUES (:id_user, :permission)" );
        $q->execute ( ( array ) $userOBJ );
        $this->DBH->commit ();
        echo "it works";
    } catch ( Exception $e ) {
        echo "it doesn't work";
        echo $e->getMessage ();
    }
}

我要插入的表有两列:ID_USER和PERMISSION。权限有一个默认值,这就是我只为ID_USER提供setter函数并将权限留空的原因。

我想要实现的是使用具有正确值的User对象将数据插入到表中,并将User对象传递给USER_mapper,这将恢复信息并将其放在相应的表中。

我希望我已经足够清楚地突出我的问题了。让我知道是否应该添加更多细节和地点。

EDIT1:我忘了提到当我使用上面的方法时,我得到一个php错误,看起来像这样:

[22-Nov-2013 03:18:08 Europe/Berlin] PHP Fatal error:  Uncaught exception 'PDOException' with message 'There is no active transaction' in directory

EDIT2:我发现如何使用bindParam()执行此操作,如下所示:

$id_user = $userObject->getIDUser ();
$this->DBH->beginTransaction ();
$stmt = $this->DBH->prepare ( "INSERT INTO online_magazine.USER_TABLE (id_user) VALUES (:id_user)" );
$stmt->bindParam ( ':id_user', $id_user, PDO::PARAM_STR );
$stmt->execute ();
$this->DBH->commit ();

谢谢大家!!

0 个答案:

没有答案