我刚创建了一些代码行,使用带有MySQL数据库的PDO将一些数据插入数据库。 代码如下:
define("cstring", "mysql:host=localhost;dbname=perpus2014");
define("username", "root");
define("password", "");
class database {
protected $koneksi;
protected function db() {
try {
$koneksi = new PDO(cstring, username, password);
} catch (Exception $e) {
echo $e->getmessage();
}
return $koneksi;
}
}
//------------------------------------
class adm extends database {
private $nama;
private $password;
private $conn;
function __construct() {
$this->conn = $this->db();
}
function set($value1, $value2) {
$this->nama = $value1;
$this->password = $value2;
}
private function getname() {
return $this->nama;
}
private function getpass() {
return $this->password;
}
public function insert() {
try {
$save = $this->conn->prepare("insert intdo tes (nama,password) values (?,?)");
$save->bindParam(1, $this->getname());
$save->bindParam(2, $this->getpass());
$save->execute();
return true;
} catch (PDOException $e) {
print $e->getMessage();
return false;
}
}
}
代码已经成功地将行插入到数据库中,但是当我试图错过拼写代码时,例如" bindParam" to" blindParam"或"插入"到" insseert"或者其他什么,代码在$ save-> execute();
之后继续给出1作为布尔返回值我的异常有什么问题,为什么它没有打印错误信息并返回false布尔值?
更新后,我发布了完整的代码。
答案 0 :(得分:0)
$koneksi->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
database
类的构造函数中,您可能无法创建database
对象并返回null
。在我看来,如果发生错误,就不应该在那里处理。PDO
类没有inseeert
方法,如果您尝试调用该方法,它应该如何负责产生错误?只有在您的数据库代码中出现错误时才会引发PDOException
,例如:连接失败,查询中出现语法错误等... 更新:对于第三个建议:
$pdo = new PDO( /* params here */ );
$pdo->query('SELECT * FROM test');
在上述情况下,解释器会引发错误,因为PDO类没有查询方法。
$pdo->query('SLECT * FROM test');
现在,PDO类可以引发异常,因为您的代码(从PHP角度来看)是正确的,但是您提供了一个错误的参数(一个语法错误的查询字符串)。
我希望它有所帮助。另请阅读Exceptions
,如果它还不清楚,可以使用它们。