【发布时间】:2015-07-13 01:45:14
【问题描述】:
我需要使用 PDO 在数据库中插入一行。但它不起作用,也没有打印任何错误,所以我不知道问题出在哪里。
连接正常,因为我可以运行 UPDATE 查询。
但是在这个查询中它会卡住而没有打印任何错误:
$dbtype = "mysql";
$dbhost = "xxx";
$dbname = "xxx";
$dbuser = "xxx";
$dbpass = "xxx";
$db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO users (id, name) VALUES (:id,:name)";
$q = $db->prepare($sql);
$q->execute(array(
':id'=>$id,
':name'=>$name
));
除了这个命令还有其他的调试方法吗?
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
【问题讨论】:
-
put print_r($conn->errorInfo());执行后得到什么错误?
-
这总是空的:数组([0] => 00000 [1] => [2] =>)
-
替换 :id -> id 和 :name -> name 不带 :.
-
@JackDavis 将您的代码放入 try and catch 块中,例如
try { //your stuff } catch(PDOException $e) { echo $e->getMessage();} -
@vanadium23 不,这没什么区别!
标签: php mysql exception pdo error-handling