• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

主键 – php中mysql重复插入没有捕获到异常?

php 搞代码 4年前 (2022-01-25) 16次浏览 已收录 0个评论
文章目录[隐藏]
<code> function sql_add($name,$db_handle)    {        try{             $statement = $db_handle->prepare            (                'INSERT INTO qiangpiao(name,xuehao,xiaoqu,zuoweihao,time) VALUES (:name,:xuehao,:xiaoqu,:zuoweihao,:time)'            );            $number = $db_handle->prepare            (                'select count(1) from qiangpiao'              );            $number->execute();            /*变量的定义*/            $matches = array();            $matches = fenci($name);            $name = $matches[1];            $xuehao = $matches[2];            $xiaoqu = $matches[3];            $zuoweihao = $number->fetch();//通过数据库来增加数据            echo $zuoweihao[0];            echo "\n";            $time = date("Y-m-d H:i:s",time());            echo $time;            /*数据绑定*/            $statement->bindParam(':name',$name);            $statement->bindParam(':xuehao',$xuehao);            $statement->bindParam(':xiaoqu',$xiaoqu);            $statement->bindParam(':zuoweihao',$zuoweihao[0]);            $statement->bindParam(':time',$time);            $statement->execute();             return;        }catch(PODException $e){            echo $e->getMessage();         }    }</code>

在数据库中,我设置了主键为学号,重复的话应该会返回一个异常,但我没有捕获到异常,是什么原因,有没有什么解决方法。

回复内容:

<code> function sql_add($name,$db_handle)    {        try<span>@本文来*源gaodai#ma#com搞*!代#%^码$网*</span><textarea>搞gaodaima代码</textarea>{             $statement = $db_handle->prepare            (                'INSERT INTO qiangpiao(name,xuehao,xiaoqu,zuoweihao,time) VALUES (:name,:xuehao,:xiaoqu,:zuoweihao,:time)'            );            $number = $db_handle->prepare            (                'select count(1) from qiangpiao'              );            $number->execute();            /*变量的定义*/            $matches = array();            $matches = fenci($name);            $name = $matches[1];            $xuehao = $matches[2];            $xiaoqu = $matches[3];            $zuoweihao = $number->fetch();//通过数据库来增加数据            echo $zuoweihao[0];            echo "\n";            $time = date("Y-m-d H:i:s",time());            echo $time;            /*数据绑定*/            $statement->bindParam(':name',$name);            $statement->bindParam(':xuehao',$xuehao);            $statement->bindParam(':xiaoqu',$xiaoqu);            $statement->bindParam(':zuoweihao',$zuoweihao[0]);            $statement->bindParam(':time',$time);            $statement->execute();             return;        }catch(PODException $e){            echo $e->getMessage();         }    }</code>

在数据库中,我设置了主键为学号,重复的话应该会返回一个异常,但我没有捕获到异常,是什么原因,有没有什么解决方法。

PODException好像只会在new POD的时候抛出,其他时候都得判断execute()的返回值来确定操作是否成功,并通过errorCode()errorInfo()来获取错误的信息……

默认不把错误当异常抛出,你需要使用 errorCode() 来判断是否执行成功。
你可以设置
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
这样来使得 SQL 执行出错的时候抛出异常。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:主键 – php中mysql重复插入没有捕获到异常?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址