[英]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.