2015-10-02 11 views
0

Я создаю REST API для регистрации пользователя с использованием PHP и Slim. Это дает мне ошибку, когда я запускаю его в пожилом REST клиента:Нарушение ограничения целостности: 1048 Имя столбца не может быть нулевым

{"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} 

Как устранить эту ошибку?

+3

'$ update-> name' пустой или пустой. попробуйте повторить его, если он действительно имеет значение. – roullie

+0

@roullie Я пытаюсь напечатать имя $ update->, но оно дает мне внутреннюю ошибку сервера. – Corrupt

+0

Проверьте свои журналы, чтобы увидеть, в какую строку лежит ошибка, и трассировку стека. – D4V1D

ответ

0
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() .'}}'; 
     } 
    } 

Обновленный код по желанию получил

+0

проверьте свои $ request-> getBody() и как вы вызываете API? –

+0

Это дает мне ту же ошибку, и я использую расширенный клиент отдыха, чтобы проверить api – Corrupt

+0

комментарий var_dump ($ update); умереть; и снова проверьте, что у меня есть обновленный код, чтобы поймать общее исключение –

Смежные вопросы

 Смежные вопросы