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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 Slim框架插入查询不工作_Php_Mysql_Insert_Slim - Fatal编程技术网

Php Slim框架插入查询不工作

Php Slim框架插入查询不工作,php,mysql,insert,slim,Php,Mysql,Insert,Slim,我正在使用Slim框架为服务器数据库构建RESTful API。我一直绞尽脑汁想弄明白为什么下面的INSERT语句没有执行。每次我运行它,我都会得到一个错误的响应:true,并且无法保存声音。请再试一次。消息通过我的数据库中没有显示此错误来验证此错误。我的API中的其他插入查询工作正常,当我尝试在MySQL中单独运行这个插入查询时,它工作正常,但我不明白为什么这个函数不能工作 在我的DBHandler文件中: public function newSound($user_id, $sou

我正在使用Slim框架为服务器数据库构建RESTful API。我一直绞尽脑汁想弄明白为什么下面的INSERT语句没有执行。每次我运行它,我都会得到一个错误的响应:true,并且无法保存声音。请再试一次。消息通过我的数据库中没有显示此错误来验证此错误。我的API中的其他插入查询工作正常,当我尝试在MySQL中单独运行这个插入查询时,它工作正常,但我不明白为什么这个函数不能工作

在我的DBHandler文件中:

    public function newSound($user_id, $sound, $sound_viz, $latitude, $longitude, $location, $title) {
    $response = array();

    // Insert query
    $stmt = $this->conn->prepare("INSERT INTO sounds (user_id, sound, sound_viz, latitude, longitude, location, title) VALUES (?, ?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("sssddss", $user_id, $sound, $sound_viz, $latitude, $longitude, $location, $title);
    $result = $stmt->execute();
    $stmt->close();

    // Check for successful insertion
        if ($result) {
            // Sound successfully inserted
            return SOUND_CREATED_SUCCESSFULLY;
        } else {
            // Failed to post sound
            return SOUND_CREATE_FAILED;
        }

}
在我的索引文件中:

$app->post('/sounds/', function() use ($app) {
        // check for required params
        verifyRequiredParams(array('sound', 'sound_viz', 'latitude', 'longitude', 'location','title'));

        $response = array();
        $sound = $app->request->post('sound');
        $sound_viz = $app->request->post('sound_viz');
        $latitude = $app->request->post('latitude');
        $longitude = $app->request->post('longitude');
        $location = $app->request->post('location');
        $title = $app->request->post('title');

        global $user_id;
        $db = new DbHandler();

        // creating new sound
        $sound_result = $db->newSound($user_id, $sound, $sound_viz, $latitude, $longitude, $location, $title);

        if ($sound_result = SOUND_CREATED_SUCCESSFULLY) {
            $response["error"] = false;
            $response["message"] = "Sound saved successfully.";
            $response['sound_id'] = $sound_id;
            echoRespnse(201, $response);
        } else {
            $response["error"] = true;
            $response["message"] = "Failed to save sound. Please try again.";
            echoRespnse(200, $response);
        }            
    });

我的DB凭证是正确的,变量是否成功创建等等。有什么建议或建议吗?谢谢

您的比较使用了一个等号: $sound\u result=成功创建了声音 应该是 $sound\u result==成功创建了声音


您可以使用检测到这一点以及许多类似的问题。这是一个非常有用的工具,对任何PHP项目都是一个很好的补充。

经过仔细的调试后,发现问题在于用户id没有正确传入,它总是空的,因为全局变量$user\id在每次新的HTTP请求中都会被重置。我将必须找到一种方法来合并会话变量或类似的变量,以使其工作。希望这对以后遇到此问题的人有所帮助。

这是一个好发现,感谢您提供PHP Codesniffer提示!我尝试了那个改变,但不幸的是,仍然得到了同样的结果。三重相等是一个严格的比较。如果未正确设置成功创建的声音,则可能需要使用双等号进行所有类型转换。使用printfError:%s打印错误。\n,$stmt->error;