0

我目前正在编写一个需要允许用户注册的 REST 风格的 php 服务器。基础工作正常,但我现在专注于错误处理。我的 users 表在“user_name”字段和“user_email”字段上有一个唯一索引。当我尝试插入重复值时,我可以读取错误并获得类似的字符串

键“user_name”的重复条目“noggin182”

我需要把它翻译成可以显示给用户的东西。是否有一种简单的方法可以获取有关插入失败原因的更多详细信息?我可以轻松地解析字符串以找出答案,但这感觉很混乱,如果字符串在更新中更改或语言更改,事情就会中断。

4

3 回答 3

1

如果您正在尝试做我认为您正在尝试做的事情,那么可能值得采取不同的方法,并将用于将用户添加到存储过程中的逻辑,在单个事务中,并事先进行任何检查查看用户是否已经存在。

然后,您可以返回您自己的逻辑,以确定用户是否添加,或者不能添加的原因。或者提出你自己的错误或其他东西。

于 2013-05-14T09:42:08.267 回答
0

错误消息通常包含更多信息

ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist

数字错误代码 (1146)。这个数字是 MySQL 特定的,不能移植到其他数据库系统。

您可以返回此数字并在客户端上显示相应的文本,但通常我们所做的是捕获异常并记录完整的堆栈跟踪,但仅向客户端返回简单文本。您的用户不想知道有人尝试重复密钥插入,因为他们无能为力,因为他们想知道保存失败并且站点管理员已在调查时收到有关问题的警报,并且一个解决方案即将到来..

于 2013-05-14T09:29:19.633 回答
-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";
}
于 2013-05-14T09:12:58.113 回答