我目前正在编写一个需要允许用户注册的REST风格的php服务器。基础工作正在进行,但我现在专注于错误处理。我的users表在'user_name'字段和'user_email'字段上有唯一索引。当我尝试插入重复值时,我可以读取错误并获得类似
的字符串键'user_name'
的重复条目'noggin182'
我需要将其翻译成可以向用户显示的内容。是否有一种简单的方法可以获得有关插入失败原因的更多详细信息?我可以很容易地解析字符串以查找但是这感觉很麻烦,如果更新中的字符串发生变化或语言发生变化,事情就会中断。
答案 0 :(得分:1)
如果您正在尝试执行我认为您正在尝试执行的操作,则可能值得采用不同的方法,并将用户添加到存储过程中的逻辑,在单个事务中执行事先进行任何检查以确定用户是否已经存在。
然后,您可以返回自己的逻辑,以确定用户是否已添加,或者无法提供原因。或者提出你自己的错误或者某些事情。
答案 1 :(得分:0)
错误消息通常包含更多信息
ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist
数字错误代码(1146)。此数字是特定于MySQL的,不能移植到其他数据库系统。
您可以返回此数字并在客户端上显示相应的文本,但通常我们所做的是捕获异常并记录完整的堆栈跟踪,但只返回简单的文本到客户端。 您的用户不想知道尝试重复的密钥插入,因为他们无法知道他们想要知道保存失败以及网站的管理员已经收到警告,因为正在查看它并且即将推出解决方案..
答案 2 :(得分:-2)
因为该列上添加了唯一键。 unique不允许重复数据。
试试这个:
$query="select * from table where user_email='".$_POST["user_email"]."'";
$result=mysql_query($query);
if(mysql_num_rows($result)>0)
{
your insert query.....
}
else
{
echo "email already exists";
}