【发布时间】:2014-11-11 14:12:35
【问题描述】:
我有一个简单的带有 PHP 后端的 Web 应用程序。我尝试了三个小时,但无法解决问题。
我的代码如下:
1. db_connect.php
<?php
define("HOST", '127.0.0.1');
define("USER", 'root');
define("PASSWORD", '');
define("DB", 'tourist guide');
$con = new mysqli(HOST,USER,PASSWORD,DB);
if ($con->connect_errno){
die("Database Connection Failed");
exit();
}
2。 index.php
<?php
require_once 'db_connect.php';
$response = array();
$result = "";
if (isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['email'])&& isset($_POST['password'])) {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$password = $_POST['password'];
$stmt = $con->prepare("INSERT INTO
user_accounts
(first_name,last_name,email,password)
VALUES
(?,?,?,?)");
echo 'prepared statement executed. ';
$stmt->bind_param('ssss', $firstname, $lastname, $email, $password);
echo 'values given. ';
$result = $stmt->execute();
echo 'statement is executed. ';
$stmt->close();
}
if ($result) {
$response["success"] = 1;
$response["message"] = "account successfully created.";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "An error occurred during registration.";
echo json_encode($response);
}
?>
输出如下:
prepared statement executed. values given. statement is executed. {"success":0,"message":"An error occurred during registration."}
只有错误必须是$result = $stmt->execute();。我在这里错了吗?还是错误是别的?请帮忙。
更新:
从我添加的弗雷德的评论中:
if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}
现在他出现了真正的错误:
Cannot add or update a child row: a foreign key constraint fails
看起来错误在我的数据库外键中...稍后我会解决它..如果您现在知道错误,请告诉我...谢谢 fred。
【问题讨论】:
-
似乎您关闭数据库连接太快了。将
$stmt->close();放在echo json_encode($response);之后 -
@Fred-ii- 那么我应该把 $stmt->close(); 放在哪里?
-
就在您关闭
?>标记之前。还要确保您的表单元素都具有名称属性。在您打开<?php标记error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部,看看它是否产生任何结果。 -
@Fred-ii- umm.. 仍然显示相同的输出
-
我正在写一篇。
标签: php mysql mysqli prepared-statement