为什么用户输入没有附加到我的 SQL 数据库?
Why does the user input not append to my SQL database?
我正在为我的客户开发一个 login/register 表格。现在我正在处理表格的注册部分,但我似乎遇到了问题。
我正在尝试将用户的输入附加到当前不存在的数据库中。我正在使用 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);
// ...
我正在为我的客户开发一个 login/register 表格。现在我正在处理表格的注册部分,但我似乎遇到了问题。
我正在尝试将用户的输入附加到当前不存在的数据库中。我正在使用 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);
// ...