所以我是PDO的初学者,我在做一些看似简单的事情时遇到了麻烦。我不能让我的表更新,它不会给我任何错误。看看:
<?php
$host = 'localhost';
$dbname = 'postGal';
$user = 'user';
$pass = 'pass';
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
catch(PDOException $e) {
echo "Reported Error";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
class person {
public $f_name;
public $l_name;
function __construct($f,$l) {
$this->f_name = $f;
$this->l_name = $l;
}
}
$person = new person('John','Doe');
$STMT = $DB->("INSERT INTO users (f_name, l_name) value (:f_name, :l_name)");
$STMT->execute((array)$person);
?>
此外,我知道该表,一切正常,因为我可以使用mysql或mysqli执行相同的语句。谢谢!
答案 0 :(得分:2)
你必须拥抱可能在try-block中抛出异常以捕获抛出异常的代码块。
还必须在insert-statement中说VALUES而不是VALUE。
你也完全误用了准备好的陈述。有关简单示例,请参阅手册。例如,您必须在某个时刻调用prepare-method,并且您的数组转换很奇怪,不确定您要做什么。
我也在这里嗅到一个巨魔。
答案 1 :(得分:0)
也许catch
希望成为set_error_handler
。 $DB->("INSERT
错过了prepare
方法。最后,我认为你不能像这样将对象转换为数组。也许你想要get_object_vars
并操纵它成为所需的数组(以冒号开头的键),但那么对象是什么?只需使用数组。