【问题标题】:mysqli : know what caused the query errormysqli:知道是什么导致了查询错误
【发布时间】:2014-01-16 15:22:34
【问题描述】:

我正在使用 mysqli 来查询数据库。我应该为具有主键“用户名”和唯一字符串“电子邮件”的表“用户”插入值。当我执行查询时:

$result= $this->connection->query($query_string);
if(!$result)
    trigger_error($this->connection->error);

如果我尝试插入重复的主键,我会得到:

注意:第 53 行 /Library/WebServer/Documents/Cinema/services/database.php 中键“PRIMARY”的重复条目“ramy”

如果我尝试插入重复的电子邮件:

注意:第 53 行 /Library/WebServer/Documents/Cinema/services/database.php 中的密钥“email”的重复条目“ramy.alzuhouri@student.unife.it”

现在我的问题是:有没有办法在不解析字符串的情况下知道问题出在哪里?如果出现错误,我想向用户显示“此用户名已存在”之类的错误。如果唯一的方法是解析字符串,你会怎么做?我不需要代码,只是如何解析它的提示:我是否应该在错误字符串中查找工作“主要”,以得出我正在尝试插入重复主键的结论?

【问题讨论】:

    标签: php mysql sql mysqli


    【解决方案1】:

    我想向用户显示“此用户名已存在”之类的错误。

    显示此类消息的更常见方法是首先运行 SELECT 查询。

    【讨论】:

      【解决方案2】:

      寻找“key”之后的单词。这应该告诉你错误在哪里。也许是这样的:

      function parse($errorstring){
      $keyloc = strpos($errorstring,"key");
      $afterkey = substr($errorstring,$keyloc+5);
      return substr($afterkey,0,strpos($afterkey,"'"));
      }
      

      这将告诉您哪个键是重复的。编辑:对不起,混淆了其中一个功能!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多