php - Slim 框架 INSERT 查询不起作用

标签 php mysql insert slim

我正在使用 Slim 框架为服务器数据库构建 RESTful API。我一直在绞尽脑汁试图找出为什么下面的 INSERT 语句没有执行。每次运行它时,我都会收到一条响应“错误:true”和“无法保存声音。请重试。”信息。通过它没有显示在我的数据库中的事实来验证此错误。我的 API 中的其他 INSERT 查询工作正常,当我尝试在 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);
        }            
    });

我的数据库凭据是正确的,变量 SOUND_CREATED_SUCCESSFULLY 等也是正确的。有什么建议或建议吗?谢谢!

最佳答案

您的比较使用单个等号:
$sound_result = SOUND_CREATED_SUCCESSFULLY
应该是
$sound_result === SOUND_CREATED_SUCCESSFULLY

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

关于php - Slim 框架 INSERT 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198309/

相关文章:

PHP - 从包含 HTML 的字符串中突出显示文本

MySQL-如何解析 INSERT 内部的字符串值以查找子字符串

mysql - 基于列计算非连续行集的优化方法

PHP 动态字段 INSERT MySQL

mysql - PHP/Mysql 日历

具有多个 RDBMS 的 PHP、Python、Ruby 应用程序

php - 将对象插入数组

php - Linux 上的 DB2 驱动程序出现许可证错误

mysql - 我正在尝试使用 sql 划分两个选择查询,不确定这是否可行

php - 从数据库回显数据时使用 PHP 变量