Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
已执行查询,但数据未保存到数据库PHP/SQL中_Php_Sql_Json_Post_Mysqli - Fatal编程技术网

已执行查询,但数据未保存到数据库PHP/SQL中

已执行查询,但数据未保存到数据库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){

我正在尝试执行一个SQL查询,将POST数据保存到数据库中。数据正确输入,POST数据附带的数组将转换为字符串

执行查询时,会显示消息“Successfully Save to database”(成功保存到数据库),但是数据在数据库中不可见,因此我的代码中一定有一点错误,但是我似乎找不到它

请参见下面的我的代码:

//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”。出现此消息是因为您打印了它,而不是因为查询成功运行。谢谢,通过错误消息,我能够解决问题。谢谢,通过错误消息,我能够解决问题。