gpt4 book ai didi

php - 准备好的语句没有执行

转载 作者:行者123 更新时间:2023-11-29 01:56:44 25 4
gpt4 key购买 nike

我有一个使用 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();。我错了吗?或者错误是别的什么?请帮忙。

更新:

从 fred 的评论我补充说:

if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);} 

现在他显示出真正的错误:

无法添加或更新子行:外键约束失败

看起来错误是在我的数据库外键中......我稍后会解决它......如果你现在知道错误,那么请告诉我......谢谢弗雷德。

最佳答案

按照OP的意愿关闭问题,看到错误已经找到。

您似乎过早关闭了数据库连接。

$stmt->close(); 放在结束 ?> 标签之前。

此外,不要将整个 if/else block 包括 $result = $stmt->execute(); 替换为 if(!$stmt ->execute()){trigger_error("There was an error....".$con->error, E_USER_WARNING);} 以便查看失败的真正错误。

您还应该将 die("Database Connection Failed"); 替换为
die('连接失败 [' . $con->connect_error . ']');
在您的连接失败时获取真正的错误。

看到问题出在你的外键上。

关于php - 准备好的语句没有执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26866860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com