(请耐心等待。)如果产生此错误,我想重定向到某个页面。如果数据库中存在重复条目(即,如果在提交给db后出现问题,但用户重新提交页面。)
错误:INSERT INTO di_ssenisub(timestamp,business_name,business_type,username,main_email,password)VALUES(NOW(),' 123',' Hotel',' 123& #39;,' jkljllk@mrmd.com',' $ 2y $ 10 $ gYxXbmHKNmqrEHhB2qOw8uVVs7HNOmdN4oTpv8m98.lN / 3R6MwseG')重复输入' 123'关键'PRIMARY'
我的代码目前设置在其他地方:
else {
echo "Error: " . $insertSQL . "<br>" . mysqli_error($link);
}
我想要做的是将它们重定向到登录/错误页面,这样他们就可以登录并从管理面板完成注册。
有什么想法?感谢。
$insertSQL = sprintf("INSERT INTO di_ssenisub (timestamp,
business_name,
business_type,
username,
main_email,
password)
VALUES (NOW(), %s, %s, %s, %s, %s)",
GetSQLValueString($business_name, "text"),
GetSQLValueString($business_type, "text"),
GetSQLValueString($_POST['username_entry'], "text"),
GetSQLValueString($main_email, "text"),
GetSQLValueString($hashPass, "text"));
if (mysqli_query($link, $insertSQL)) {
session_start();
$_SESSION['username'] = $username_check;
$_SESSION['business_name'] = $business_name;
$_SESSION['business_type'] = $business_type;
header('Location: ../../register/' .$business_type_link);
}
"UPDATE $table_name SET
business_name='$business_name',
business_type='$business_type',
username=$username_entry,
main_email='$main_email',
password = '$hashPass'
WHERE id='$user_id' LIMIT 1");
mysqli_close($link);
答案 0 :(得分:0)
$insertSQL = sprintf("INSERT INTO di_ssenisub (timestamp,
business_name,
business_type,
username,
main_email,
password)
VALUES (NOW(), %s, %s, %s, %s, %s)",
GetSQLValueString($business_name, "text"),
GetSQLValueString($business_type, "text"),
GetSQLValueString($_POST['username_entry'], "text"),
GetSQLValueString($main_email, "text"),
GetSQLValueString($hashPass, "text"));
$affected += mysqli_rows_affected($link);
$insert_error = mysqli_errorno($link);
"UPDATE $table_name SET
business_name='$business_name',
business_type='$business_type',
username=$username_entry,
main_email='$main_email',
password = '$hashPass'
WHERE id='$user_id' LIMIT 1");
$affected += mysqli_rows_affected($link);
$insert_error = mysqli_errorno($link);
session_start();
$_SESSION['username'] = $username_check;
$_SESSION['business_name'] = $business_name;
$_SESSION['business_type'] = $business_type;
}
mysqli_close($link);
INSERT和UPDATE之后,检查数据是否有问题。
让用户受宠,不要拒绝他们的用户名。允许重复的用户名。
如果您想使用唯一的用户名并强制用户提供一个唯一的名称,请添加一些分析,以查看有多少人放弃您的网站而不是继续注册。
如果必须像stackoverflow那样使用唯一的用户名,那么请输入用户名和屏幕名称。 stackoverflow使用电子邮件登录。
if ($affected == 0){
// do error detection / correction here
// create warnings
include('form.php');
exit
}
else{
include('next_page.php');
}
更新结束
使用包含,并重新填充INPUTS。
要消除重复,首先执行INSERT并立即执行INSERT并使用UPDATE。
INSERT INTO di_ssenisub (timestamp, business_name, business_type, username, main_email, password)
无需检查错误,只需执行更新即可。记录存在时非常快。
UPDATE `di_ssenisub` SET `business_name` = '123', `business_type`,...
WHERE `username` = '123';
WHERE术语使用PRIMARY索引中的列。其余的进入SET。
如果要在发现问题时验证值,请不要执行重定向(`标题(“位置:”)
您希望将发现的问题传递给用户。
假设您发现无效电子邮件等问题:
$ warn_email ='*“;
包括( 'form.php的'); 出口;
在form.php中
$warn_email<inpupt name="email"
重新填充INPUTS
您有提交的数据:
$timestamp = $_POST['timestamp'];
$business_name = $_POST['business_name'];
$business_type = $_POST['business_type'];
$username = $_POST['username'];
$main_email = $_POST['main_email'];
使用include,这些值将自动传递给表单。
<input type="text" name="business_name" value="$business_name" />
<input type="text" name="business_type" value="$business_type" />
<input type="text" name="username" value="$username" />
<input type="text" name="main_email" value="$main_email" />
如果他们进入Fresh,则变量为空,您在HTML中获得value=""
。
如果要检查INSERT和OR UPDATE错误,请执行以下操作:
$affected = 0;
INSERT ...
$affected += mysqli_rows_affected($link);
UPDATE ...
$affected += mysqli_rows_affected($link);
if ($affected == 0){echo 'Houston we have a problem';}
答案 1 :(得分:0)
您想知道什么,如何检测错误或如何重定向?如果你想重定向到另一个页面,那么holpducki的回答是正确的:
header("Location:http://www.example.com/login.php");
exit;
如果您尝试检测错误,则可以使用mysql_errno()
或mysql_error()
PHP函数:
http://php.net/manual/en/function.mysql-error.php
http://php.net/manual/en/function.mysql-errno.php
例如:
if (mysql_errno($resource) == 1092) {
header("Location:http://www.example.com/login.php"); // send to login
exit;
} else {
...
}
可以在此处找到MySQL错误编号列表:
http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html
在这里:
http://dev.mysql.com/doc/refman/5.6/en/error-messages-client.html