mysqli:知道导致查询错误的原因

时间:2013-12-29 16:58:42

标签: php mysql sql mysqli

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

$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'

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

2 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:-1)

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

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

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