php - PHP 表单/准备好的语句错误
问题描述
我正在创建一个用户注册表单,但我对准备好的语句有疑问。如果我exit();
在代码中添加一个,注册将不会导致任何地方。如果我不添加exit();
,表单将显示正确的错误消息,然后在第二次尝试时将其关闭。
另外,另一个(菜鸟)问题,我如何为已经注册的电子邮件实现错误消息?我添加了$sql = "SELECT * FROM users WHERE user_name=? AND user_email=?";
,mysqli_stmt_bind_param($stmt, "ss", $name, $email);
但我无法显示错误消息。
到目前为止,对于准备好的语句问题:
else {
$sql = "SELECT * FROM users WHERE user_name=?";
$stmt = mysqli_stmt_init($con);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../index.php?sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "s", $name);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if ($resultCheck > 0) {
array_push($error_array, "Oops! This username is already taken.<br>");
exit();
}
解决方案
您不需要退出,因为您已经有了问题注册电子邮件的标题:您可以使用函数 num_rows, http ://php.net/manual/pt_BR/mysqli-result.num-rows.php
$mysqli = new mysqli("localhost","root", "", "tables");
$query = $mysqli->prepare("SELECT * FROM users WHERE user_name=? AND
user_email=?");
$query->execute();
$query->store_result();
$rows = $query->num_rows;
并做一个如果
if($rows>0){
//message error
}
推荐阅读
- ansible - 如何使用ansible远程安装exe,exe下载到控制机上
- html - 我有属性名称,但 req.body.name1 抛出未定义
- javascript - 如何使用 Joi 根据计算值验证对象?
- jenkins - 用于 JMeter 性能测试的 Hybris 服务器启动
- c# - 如果使用 lambda C# 有效,则应用过滤器
- matlab - 为什么这段代码不返回我的 3D 数组中元素的索引?
- azure - 使用托管版本访问 Microsoft Azure 存储资源管理器中的 FHIR 数据
- xodus - Jetbrains xodus 没有更多可用字节错误
- javascript - 如何修复这个 JavaScript 滑块代码?
- javascript - 如何使用 JavaScript 触发器或 AJAX 更改 WooCommerce 运输方式?