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