php pdo 抛出异常模式,PHPpdo,为什么不抛出异常?

如下代码:

/**

* 写入数据

*

* @param string $table

* @param array $data

* @return int

*/

public function insert($table ,$data){

try {

$sql = "INSERT INTO ".$this->table($table);

$columns = $values = '';

foreach( $data as $k=>$v ) {

$columns .= "`$k`,";

$values .= ":$k,";

}

$columns = rtrim($columns,',');

$values = rtrim($values,',');

$sql = $sql . " ($columns) VALUES ($values)";

$this->_init($sql ,$data);

unset($sql ,$columns ,$values);

return $this->insertId();

}catch( \PDOException $e ) {

$this->halt($e->getMessage() ,$this->getSql());

return false;

}

}

会生成如下SQL,

INSERT INTO `dba_tables` (`pid`,`sellerId`,`cardNum`,`processUnit`,`proDate`,`dateOfPro`,`shipDate`,`clinicName`,`doctor`,`created`,`doctorEmail`,`doctorMobile`,`treatTime`,`treatDesc`,`patient`,`patientEmail`,`remark`) VALUES (3,0,'2DFBD1-9E27-CFFD-6846-459CA9E9','第二车间',1460476800,1459008000,1463068800,'某医院','某医生',1460507802,'d@a.com','13333333333','','牙','某某某','c@a.com','asfasdf')

用PHP执行上面的语句,不出现在错误也不抛出异常。

已经开启了pdo的抛出异常模式

$this->_pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

但是用phpmyadmin执行会出现如下错误

bVuP40

回复内容:

如下代码:

/**

* 写入数据

*

* @param string $table

* @param array $data

* @return int

*/

public function insert($table ,$data){

try {

$sql = "INSERT INTO ".$this->table($table);

$columns = $values = '';

foreach( $data as $k=>$v ) {

$columns .= "`$k`,";

$values .= ":$k,";

}

$columns = rtrim($columns,',');

$values = rtrim($values,',');

$sql = $sql . " ($columns) VALUES ($values)";

$this->_init($sql ,$data);

unset($sql ,$columns ,$values);

return $this->insertId();

}catch( \PDOException $e ) {

$this->halt($e->getMessage() ,$this->getSql());

return false;

}

}

会生成如下SQL,

INSERT INTO `dba_tables` (`pid`,`sellerId`,`cardNum`,`processUnit`,`proDate`,`dateOfPro`,`shipDate`,`clinicName`,`doctor`,`created`,`doctorEmail`,`doctorMobile`,`treatTime`,`treatDesc`,`patient`,`patientEmail`,`remark`) VALUES (3,0,'2DFBD1-9E27-CFFD-6846-459CA9E9','第二车间',1460476800,1459008000,1463068800,'某医院','某医生',1460507802,'d@a.com','13333333333','','牙','某某某','c@a.com','asfasdf')

用PHP执行上面的语句,不出现在错误也不抛出异常。

已经开启了pdo的抛出异常模式

$this->_pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

但是用phpmyadmin执行会出现如下错误

bVuP40

回答已删除,见谅

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值