我正在使用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”工作,得出结论我试图插入一个重复的主键?
答案 0 :(得分:1)
我想向用户显示“此用户名已存在”之类的错误。
显示此类消息的一种更常见的方法是首先运行SELECT查询。
答案 1 :(得分:-1)
在“key”之后查找单词。这应该告诉你错误的位置。也许是这样的:
function parse($errorstring){
$keyloc = strpos($errorstring,"key");
$afterkey = substr($errorstring,$keyloc+5);
return substr($afterkey,0,strpos($afterkey,"'"));
}
这将告诉您哪个密钥是重复的。编辑:对不起,混淆了其中一个功能!