我有一个PHP脚本,它应该将电影ID保存到名为“seen_movies”的MySQL数据库表中。但是,即使脚本运行时没有错误,数据也不会保存到表中。我已经检查了该表是否具有正确的列和数据类型,还检查了SQL语句是否正确。我不知道还能尝试什么。
以下是我的PHP代码:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Origin: http://localhost:3001');
header('Access-Control-Allow-Origin: http://localhost:3000');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
$servername = "*********";
$username = "******";
$password = "************";
$dbname = "my_movies";
// create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// get selected movie IDs
if (isset($_POST['selectedMovies'])) {
$selectedMovies = $_POST['selectedMovies'];
// prepare and bind SQL statement
$stmt = $conn->prepare("INSERT INTO seen_movies (id) VALUES (?)");
$stmt->bind_param("i", $movieId);
// loop through selected movie IDs and execute SQL statement
foreach ($selectedMovies as $movieId) {
$stmt->execute();
}
// close statement
$stmt->close();
}
echo json_encode(array('status' => 'success'));
$conn->close();
?>
浏览器控制台响应:
Saving movies: (2) [315162, 700391] PopularMovies.js:28
API response: {status: 'success'} PopularMovies.js:40
下面是mysql中的表布局
mysql> DESCRIBE seen_movies
-> ;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
我已经检查了phpmyadmin和mysql中的表数据,表是空的。
我已经想了好几个小时了,谢谢!
编辑:
我查看了开发人员工具中的网络选项卡,以查看代码是否与API交互,我可以看到它列出,但响应显示“未能加载数据:没有内容可用于预检请求'
2条答案
按热度按时间mnemlml81#
title
字段is non-null,意味着您不能插入不包含标题的行:但是你的SQL正试图做到这一点:
代码中没有error handling,所以你看不到错误,但语句失败了。
zvms9eto2#
一个或多或少类似于你的问题的答案被张贴here。
但简而言之,绑定只执行一次,当时的值在变量
$movieID
中。由于变量没有初始化,$stmt
变成了一个“insertnothing”查询,这是完全有效的(因此成功),但是没有任何东西插入到数据库中(并且这个查询被执行多次)。试着用这种方式修改你的代码:
希望这有帮助!