Я создаю REST API для регистрации пользователя с использованием PHP
и Slim
. Это дает мне ошибку, когда я запускаю ее в расширенном клиенте REST:
{"error":{"text":SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null}}
Код для модуля регистров выглядит следующим образом:
function insertUpdate() { $request = \Slim\Slim::getInstance()->request(); $update = json_decode($request->getBody()); $sql = "INSERT INTO users (name,email,password,phoneNumber,imageUrl,created_at) VALUES (:name, :email, :password, :phoneNumber, :imageUrl, :created_at)"; try { $db = getDB(); $stmt = $db->prepare($sql); $stmt->bindParam("name", $update->name); $stmt->bindParam("email", $update->email); $stmt->bindParam("password",$update->password); $stmt->bindParam("phoneNumber",$update->phoneNumber); $stmt->bindParam("imageUrl",$update->imageUrl); $time=time(); $stmt->bindParam("created_at", $time); $stmt->execute(); echo "Register successfull"; } catch(PDOException $e) { //error_log($e->getMessage(), 3, '/var/tmp/php.log'); echo '{"error":{"text":'. $e->getMessage() .'}}'; } }
Трассировки стека:
#0 /Applications/XAMPP/xamppfiles/htdocs/api/v1/index.php(71): Slim\Slim::handleErrors(8, 'Trying to get p...', '/Applications/X...', 71, Array) #1 [internal function]: insertUpdate() #2 /Applications/XAMPP/xamppfiles/htdocs/api/v1/Slim/Route.php(462): call_user_func_array('insertUpdate', Array) #3 /Applications/XAMPP/xamppfiles/htdocs/api/v1/Slim/Slim.php(1326): Slim\Route->dispatch() #4 /Applications/XAMPP/xamppfiles/htdocs/api/v1/Slim/Middleware/Flash.php(85): Slim\Slim->call() #5 /Applications/XAMPP/xamppfiles/htdocs/api/v1/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call() #6 /Applications/XAMPP/xamppfiles/htdocs/api/v1/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call() #7 /Applications/XAMPP/xamppfiles/htdocs/api/v1/Slim/Slim.php(1271): Slim\Middleware\PrettyExceptions->call() #8 /Applications/XAMPP/xamppfiles/htdocs/api/v1/index.php(14): Slim\Slim->run() #9 {main}
Как разрешить эту ошибку?
function insertUpdate() { $request = \Slim\Slim::getInstance()->request(); parse_str($request->getBody(),$update); $sql = "INSERT INTO users (name,email,password,phoneNumber,imageUrl,created_at) VALUES (:name, :email, :password, :phoneNumber, :imageUrl, :created_at)"; try { //Validate your filed before insert in db if(!is_array($update) || (!$update)) { throw new Exception('Invalid data received'); } // put your require filed list here if((!$update['name']) || (!$update['email']) || (!$update['password'])){ throw new Exception('Missing values for require fields'); } $db = getDB(); $stmt = $db->prepare($sql); $stmt->bindParam("name", $update['name']); $stmt->bindParam("email", $update['email']); $stmt->bindParam("password",$update['password']); $stmt->bindParam("phoneNumber",$update['phoneNumber']); $stmt->bindParam("imageUrl",$update['imageUrl']); $time=time(); $stmt->bindParam("created_at", $time); $stmt->execute(); echo "Register successfull"; } catch(PDOException $e) { //error_log($e->getMessage(), 3, '/var/tmp/php.log'); echo '{"error":{"text":'. $e->getMessage() .'}}'; }catch(Exception $e) { //error_log($e->getMessage(), 3, '/var/tmp/php.log'); echo '{"error":{"text":'. $e->getMessage() .'}}'; } }
Обновленный код в соответствии с полученным запросом