Php 在MySQL中创建重复条目时重定向到自定义错误页面

Php 在MySQL中创建重复条目时重定向到自定义错误页面,php,mysql,Php,Mysql,我试图将用户重定向到自定义错误页面(例如:error.php),当创建重复条目时,这是insert语句的一个示例,但我不知道如何进行重定向 $values = $_POST; foreach ($values as &$value) { $value = mysql_real_escape_string($value); } $sql1="INSERT INTO loan (loan_id) VALUES ('$values[loan_id]')"; $result = my

我试图将用户重定向到自定义错误页面(例如:error.php),当创建重复条目时,这是insert语句的一个示例,但我不知道如何进行重定向

$values = $_POST;
foreach ($values as &$value) {
    $value = mysql_real_escape_string($value);
}

$sql1="INSERT INTO loan (loan_id)
VALUES ('$values[loan_id]')";

$result = mysql_query($sql1);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

您可以使用
header()
重定向:


确保在发送HTML标题之前执行此操作

我宁愿在插入之前检查现有数据,而不是仅仅插入它:

$query = "SELECT * FROM myDB WHERE loan_id = " . $values["loan_id"];
$result = mysql_query($query);
if (!$result) {
   echo "Wrong input";
} else {
   echo "right input";
}

您可以根据需要加载整个页面或使用重定向,而不是使用字符串回音,如果您尚未输出任何内容,则正确的重定向表单输入的方法是使用重定向

要在当前行重定向,请在PHP中执行如下操作:

// Tell the browser to redirect
header('Location: /error.php', TRUE, 303);

// This ensures that the script doesn't continue
// Also, it shows the error on the off chance their browser doesn't redirect
die('Input error.');
必须确保在任何输出之前包含header函数

在您的代码中:

if (!$result) {
    header('Location: /error.php', TRUE, 303);
    die('Invalid query: ' . mysql_error());
} else {
    header('Location: /success.php', TRUE, 303);
    die('Success');
}

请注意,必须在发送任何输出之前调用它!如果输入成功,并且我已经让它重定向到另一个页面,该怎么办,我可以有两个重定向吗?如果没有错误,一个重定向到success.php,如果有错误,另一个重定向到error.phperror@dames:只需使用简单的
if
即可根据错误确定要重定向的页面。如何定义重复条目?该列上有唯一的约束,riilight?True,但是你在做什么更清楚。由于每个代码最终都会增长,或者复制到类似的情况下,您很容易看到,在这些情况下,您必须区分不同的错误。“工作太多”从来不是开发人员的借口。:)如果您想检查更多的密钥是否是重复的,那么您必须执行类似于建议的操作,但是由于我们只检查密钥是否是重复的,因此检查插入时的错误是最有效的方法。到服务器只需一次而不是两次。在您的情况下,我至少只选择load_id列。如果输入成功,并且我已经让它重定向到另一个页面,那么我可以有两个重定向,一个重定向到success.php(如果没有错误),另一个重定向到error.php(如果有错误)吗?是的。你只要用IF…ELSE语句包起来就行了。成功时重定向到一个页面,错误时重定向到另一个页面。我已经更新了我的答案,以显示如何在代码中实现它。要内联生成错误,只需执行
包括'error.php'
if (!$result) {
    header('Location: /error.php', TRUE, 303);
    die('Invalid query: ' . mysql_error());
} else {
    header('Location: /success.php', TRUE, 303);
    die('Success');
}