已执行查询,但数据未保存到数据库PHP/SQL中
我正在尝试执行一个SQL查询,将POST数据保存到数据库中。数据正确输入,POST数据附带的数组将转换为字符串 执行查询时,会显示消息“Successfully Save to database”(成功保存到数据库),但是数据在数据库中不可见,因此我的代码中一定有一点错误,但是我似乎找不到它 请参见下面的我的代码:已执行查询,但数据未保存到数据库PHP/SQL中,php,sql,json,post,mysqli,Php,Sql,Json,Post,Mysqli,我正在尝试执行一个SQL查询,将POST数据保存到数据库中。数据正确输入,POST数据附带的数组将转换为字符串 执行查询时,会显示消息“Successfully Save to database”(成功保存到数据库),但是数据在数据库中不可见,因此我的代码中一定有一点错误,但是我似乎找不到它 请参见下面的我的代码: //database connection file require "includes/dbh.inc.php"; foreach ($_POST as $post_var){
//database connection file
require "includes/dbh.inc.php";
foreach ($_POST as $post_var){
$obj = json_decode($post_var);
//Convert arrays to string
$userLikes = implode("|", $obj->userLikes);
$userEvents = implode("|", $obj->userEvents);
$userPosts = implode("|", $obj->userPosts);
$sql = "INSERT INTO visitor_data (id, fb_id, name, location, likes, events, posts) VALUES (NULL, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: dom.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ssssss", $obj->userId, $obj->userName, $obj->userLocation, $userLikes, $userEvents, $userPosts);
mysqli_stmt_execute($stmt);
echo '<p>Succesfully saved into database</p>';
exit();
}
}
//数据库连接文件
需要“includes/dbh.inc.php”;
foreach($\作为$POST\变量记账){
$obj=json\u decode($post\u var);
//将数组转换为字符串
$userLikes=内爆(“|”,$obj->userLikes);
$userEvents=内爆(“|”,$obj->userEvents);
$userPosts=内爆(“|”,$obj->userPosts);
$sql=“在访客数据(id、fb_id、姓名、位置、喜好、事件、帖子)中插入值(NULL、、、、、、、、?)”;
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$sql)){
标题(“Location:dom.php?error=sqlerror”);
退出();
}
否则{
mysqli_stmt_bind_param($stmt,“ssssss”,$obj->userId,$obj->userName,$obj->userLocation,$userLikes,$userEvents,$userPosts);
mysqli_stmt_execute($stmt);
echo“成功保存到数据库中”;
退出();
}
}
这就是数据库的外观
提前谢谢 您不应该假设查询成功运行,因为没有引发异常。在知道函数是否成功运行之前,需要考虑函数的返回和行数的影响。将您的代码更新到此版本,并了解发生了什么: 还要检查以确保您不仅仅是在一遍又一遍地更新同一行
//database connection file
require "includes/dbh.inc.php";
foreach ($_POST as $post_var){
$obj = json_decode($post_var);
//Convert arrays to string
$userLikes = implode("|", $obj->userLikes);
$userEvents = implode("|", $obj->userEvents);
$userPosts = implode("|", $obj->userPosts);
$sql = "INSERT INTO visitor_data (id, fb_id, name, location, likes, events, posts) VALUES (NULL, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: dom.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ssssss", $obj->userId, $obj->userName, $obj->userLocation, $userLikes, $userEvents, $userPosts);
if ( mysqli_stmt_execute($stmt) ) {
echo '<p>Succesfully saved into database</p>';
} else {
printf("Error: %s.\n", mysqli_stmt_error($stmt) );
}
}
mysqli_stmt_close($stmt);
}
//数据库连接文件
需要“includes/dbh.inc.php”;
foreach($\作为$POST\变量记账){
$obj=json\u decode($post\u var);
//将数组转换为字符串
$userLikes=内爆(“|”,$obj->userLikes);
$userEvents=内爆(“|”,$obj->userEvents);
$userPosts=内爆(“|”,$obj->userPosts);
$sql=“在访客数据(id、fb_id、姓名、位置、喜好、事件、帖子)中插入值(NULL、、、、、、、、?)”;
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$sql)){
标题(“Location:dom.php?error=sqlerror”);
退出();
}
否则{
mysqli_stmt_bind_param($stmt,“ssssss”,$obj->userId,$obj->userName,$obj->userLocation,$userLikes,$userEvents,$userPosts);
如果(mysqli_stmt_execute($stmt)){
echo“成功保存到数据库中”;
}否则{
printf(“错误:%s.\n”,mysqli_stmt_Error($stmt));
}
}
mysqli_stmt_close($stmt);
}
您不应该假设查询成功运行,因为没有引发异常。在知道函数是否成功运行之前,需要考虑函数的返回和行数的影响。将您的代码更新到此版本,并了解发生了什么:
还要检查以确保您不仅仅是在一遍又一遍地更新同一行
//database connection file
require "includes/dbh.inc.php";
foreach ($_POST as $post_var){
$obj = json_decode($post_var);
//Convert arrays to string
$userLikes = implode("|", $obj->userLikes);
$userEvents = implode("|", $obj->userEvents);
$userPosts = implode("|", $obj->userPosts);
$sql = "INSERT INTO visitor_data (id, fb_id, name, location, likes, events, posts) VALUES (NULL, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: dom.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ssssss", $obj->userId, $obj->userName, $obj->userLocation, $userLikes, $userEvents, $userPosts);
if ( mysqli_stmt_execute($stmt) ) {
echo '<p>Succesfully saved into database</p>';
} else {
printf("Error: %s.\n", mysqli_stmt_error($stmt) );
}
}
mysqli_stmt_close($stmt);
}
//数据库连接文件
需要“includes/dbh.inc.php”;
foreach($\作为$POST\变量记账){
$obj=json\u decode($post\u var);
//将数组转换为字符串
$userLikes=内爆(“|”,$obj->userLikes);
$userEvents=内爆(“|”,$obj->userEvents);
$userPosts=内爆(“|”,$obj->userPosts);
$sql=“在访客数据(id、fb_id、姓名、位置、喜好、事件、帖子)中插入值(NULL、、、、、、、、?)”;
$stmt=mysqli\u stmt\u init($conn);
如果(!mysqli_stmt_prepare($stmt,$sql)){
标题(“Location:dom.php?error=sqlerror”);
退出();
}
否则{
mysqli_stmt_bind_param($stmt,“ssssss”,$obj->userId,$obj->userName,$obj->userLocation,$userLikes,$userEvents,$userPosts);
如果(mysqli_stmt_execute($stmt)){
echo“成功保存到数据库中”;
}否则{
printf(“错误:%s.\n”,mysqli_stmt_Error($stmt));
}
}
mysqli_stmt_close($stmt);
}
插入行后尝试关闭“stmt”。出现此消息是因为您打印了它,而不是因为查询成功运行。插入行后尝试关闭“stmt”。出现此消息是因为您打印了它,而不是因为查询成功运行。谢谢,通过错误消息,我能够解决问题。谢谢,通过错误消息,我能够解决问题。