【问题标题】:Manipulate error for duplicate entries - MySQL and PHP处理重复条目的错误 - MySQL 和 PHP
【发布时间】:2012-02-04 16:11:15
【问题描述】:

我已经设置了一个 MySQL 表的多个列,其中一个用作唯一索引。此列对应于我的一个表单输入,以便我可以防止重复的行条目。

作为 PHP 新手,我的问题是:当调用 MySQL 重复条目错误时,最简洁的操作方法是什么,以便我可以显示自定义消息或将用户返回到原始表单?

我猜想mysql_errnoheader(); 是可行的方法,但我很难理解如何做。

【问题讨论】:

    标签: php mysql error-handling duplicates


    【解决方案1】:

    您不希望普通用户看到显示的 mysql_error,因此此处首选自定义消息。当您使用带有 insert 或 update 语句的 mysql_query 时,它将在成功时返回 true,否则返回 false。

    你可以这样做来解决它:

    $query = "query goes here";
    if(mysql_query($query)) {
        echo "Success!";
    } else {
        echo "Data not submitted. Please try again.";
    }
    

    您当然可以修改它,以便在成功或失败时将用户重定向到某个地方。如果您想使用header 函数重定向用户,请确保在调用该函数之前页面上没有输出。

    【讨论】:

    • 这绝对比我的mysql_errno 建议更有意义。 SELECTINSERT 有什么好处吗?
    • 这一切都取决于你想做什么。如果要将新信息插入表中,则使用 INSERT 语句。如果要从数据库中检索信息,请使用SELECT 语句。如果要更新表中的信息,请使用 UPDATE 语句。 Here's一个可以用来学习mysql的教程。
    • 好的,太好了。你已经非常乐于助人了。非常感谢。
    【解决方案2】:

    实际上有两个问题。

    1. 如何检查重复错误。

    2. 如何向用户显示 whatever 错误,而不仅仅是向用户显示特定错误。

    首先,我宁愿使用 SELECT 而不是 INSERT。使用 SELECT 检查唯一性,然后引发错误。

    第二个,遵循 POST/Redirect/GET 模式:不要在任何地方重定向任何东西,而只是包含您的表单并使用输入的值填充它。

    最后,我希望你不会根据这个用户提供的唯一字段来识别你的记录

    【讨论】:

    • 对于第一部分,我猜你指的是SELECT * FROM WHERE....?
    猜你喜欢
    • 2019-11-26
    • 2013-01-14
    • 2013-08-12
    • 2011-03-09
    • 1970-01-01
    • 2015-07-14
    • 2023-03-06
    • 2017-08-03
    相关资源
    最近更新 更多