Php PDO-使用类插入数据时遇到问题

Php PDO-使用类插入数据时遇到问题,php,mysql,pdo,Php,Mysql,Pdo,我在让PDO工作上有点困难。我会在提供代码时解释。我不希望得到答案,但我希望有人能解释我做错了什么,以及正确的解决方案是如何工作的 我正在开发一个CMS,并试图实现一个MVC模式,因此使用了PDO 下面是my index.php文件的一节,其中包含PDO声明: <?php include_once 'models/USER_mapper.php'; $USER_mapper = new USER_mapper( 'localhost', 'root', 'root', '

我在让PDO工作上有点困难。我会在提供代码时解释。我不希望得到答案,但我希望有人能解释我做错了什么,以及正确的解决方案是如何工作的

我正在开发一个CMS,并试图实现一个MVC模式,因此使用了PDO

下面是my 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);
?>
我要插入的表有两列:ID\u USER和PERMISSION。权限有一个默认值,这就是为什么我只为ID_用户提供setter函数并将权限留空的原因

我试图实现的是使用具有正确值的用户对象将数据插入表中,并将用户对象传递给用户映射器,用户映射器将恢复信息并将其放入相应的表中

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

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 ();

谢谢大家

尝试将对象类型转换为数组有点混乱。可能将数据直接存储在
$userOBJ
中,并使用类似于
$userOBJ->getUserData()
的getter?通过getUserData,您的意思是在USER类中有一个方法将返回所有数据吗?(这将恢复到我已经做过的事情)或者仅仅使用用户类中的getter函数来获取数据?您需要编写一个方法来获取所需的数据,然后返回它。这就是我所说的
getUserData
。试图像那样将类散播到调用中不仅很难理解,而且如果有人向类中添加另一个变量,可能会破坏您的代码片段。直接传递您的数据并保存Headache中的所有人。我了解了如何使用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 ();