php - 为什么用户输入不附加到我的 SQL 数据库?
问题描述
我正在为我的客户开发登录/注册表单。现在我正在处理表格的注册部分,但是我似乎遇到了一个问题。
如果当前不存在,我正在尝试将用户的输入附加到数据库中。我正在使用 PHP 版本 7 开发此功能。但是,即使告诉我它已成功完成,该代码似乎也没有将数据附加到数据库中。
这是代码:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
//define variables and set values to null
$email = $code = "";
//set variable values to HTML input
$email = $_POST['email'];
$code = $_POST['code'];
//check if email exists
$stmt = $conn->prepare("SELECT userEmail FROM userDetails WHERE userEmail=?");
$stmt->bind_param("s", $prepemail);
//set parameters and execute
$prepemail = $email;
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
echo "email exists";
return false;
} else {
//$stmt->close(); removed as per @Akintunde-Rotimi's suggestion
//insert email into database
$stmt = $conn->prepare("INSERT INTO userDetails (userEmail) VALUES (?)");
$stmt->bind_param("s", $newemail);
//set parameters and execute
$newemail = $email;
$stmt->execute();
echo "New records created successfully";
}
}
?>
代码成功连接到数据库,甚至告诉我用户是否已经存在。它只是没有将用户的电子邮件添加到数据库中,我似乎无法弄清楚为什么。
我已经研究了如何使用准备好的语句将数据插入数据库的方法,就像我在这里所做的那样。我使用W3Schools作为参考,但仍然没有运气。
解决方案
该代码似乎没有任何明显的拼写错误,那么您是否尝试过捕捉错误?代替
$stmt->execute();
和
if(!$stmt->execute()) {
trigger_error("there was an error....".$conn->error, E_USER_WARNING);
}
您还可以检查有多少行受到影响,-1 表示有错误。
printf("%d Zeile eingefügt.\n", $stmt->affected_rows);
此外,可以显示更多错误(至少对于开发而言)
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// ...
推荐阅读
- mysql - 即使有字符也能找到最后 5 位数字并将它们转换为整数
- java - Apache Solr,需要多个单个字段,同时优化查询以仅命中特定索引
- xcode - Azure Fastlane 自动递增内部版本号
- visual-studio-code - vscode-neovim 导航问题
- azure-active-directory - 授予对第三方应用程序的访问权限
- android - 在调用 catch 处理程序之前,在 Android 上引发异常会导致 Segmentation Fault 11 错误
- unit-testing - 如何测试调用类调用的委托的交互?
- sql-server - 将从数据库生成 SQL Server 脚本的脚本
- django - “(111:连接被拒绝)同时连接到上游,客户端:” | Django、Gunicorn、Nginx - 服务器错误(500)
- ruby-on-rails - UTF-8 中对于 Ruby 中的单引号无效的字节序列