簡體   English   中英

苗條框架INSERT查詢無法正常工作

[英]Slim framework INSERT query not working

我正在使用Slim框架為服務器數據庫構建RESTful API。 我一直想弄清楚為什么下面的INSERT語句不執行。 每次運行它時,我都會收到一條回答:“錯誤:是”和“未能保存聲音。請重試。” 信息。 通過未在我的數據庫中顯示該錯誤來驗證此錯誤。 我的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項目都做了很大的補充。

經過非常仔細的調試后,結果發現問題出在,因為全局變量$ user_id隨每個新的HTTP請求都被重置,所以user_id沒有正確傳遞(始終為null)。 我將必須找到一種方法來合並會話變量或類似變量以使其正常工作。 希望這對以后遇到此問題的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM