我正在使用PDO,我想使用可以提供自定义对象/类作为isnert参数的功能插入。在catch块中不会抛出错误。如果我尝试从表中输入原始插入字段,那么它工作得很好。
这是我的自定义类,我想创建一个实例,然后使用PDO插入
class User {
public $email;
public $username;
public $fname;
public $sname;
function __construct($e,$u,$fn,$sn) {
$this->email = $e;
$this->username = $u;
$this->fname = $fn;
$this->sname = $sn;
}
}
下面是我用来尝试插入
的代码try{
$DBH = new PDO("mysql:host=localhost;dbname=mydb", "myuser", "mypass");
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$user = new User('the email','the username','the fname','the sname');
$STH = $DBH->("INSERT INTO User (email, username, fname, sname) value (:email, :username, :fname, :sname)");
$STH->execute((array)$user);
}
catch(PDOException $e) {
echo $e->getMessage();
}
您可能希望先绑定值,然后再调用execute。http://www.php.net//manual/en/pdostatement.bindparam.php
例子$STH = $DBH->prepare("INSERT INTO User (email, username, fname, sname) value (:email, :username, :fname, :sname)");
$STH->bindParam(':email', $user->email);
// and so on
$STH->execute();