2015-01-13 2 views
0

Поскольку я не могу/не знаю, как автоматически указывать два столбца в одной таблице, я пытаюсь сделать это с помощью транзакций. Это то, что я пытаюсьВставить и обновить ту же таблицу с транзакциями

$pdo->beginTransaction(); 
try 
{ 
     $sql = "INSERT INTO users (username, password, firstname, lastname, email, user_image, path) 
        VALUES (:username, :password, :firstname, :lastname, :email, :user_image, :path)"; 

     $q = $pdo->prepare($sql); 
     $q->execute(array(
        ':username' => $username, 
        ':password' => sha1($password), 
        ':firstname' => $firstname, 
        ':lastname' => $lastname, 
        ':email' => $email, 
        ':user_image' => $forDB, 
        ':path'  => $path, 
        ));      

     $lastInsertID = $pdo->lastInsertId(); 
     $sql = $pdo->prepare("INSERT INTO users (usertype) 
          VALUE (:user_id)"); 
     $sql->execute(array(
        ':user_id'  => $lastInsertID 
        )); 
     $pdo->commit();  
      }    
       // any errors from the above database queries will be catched 
      catch (PDOException $e) 
      { 
        // roll back transaction 
        $pdo->rollback(); 
        // log any errors to file 
        ExceptionErrorHandler($e); 
       exit; 
      } 

Поэтому в основном я хочу, чтобы вставить в колонке usertype идентификатор этой записи (user_id) обе колонки должны быть равны. Теперь, когда я пытаюсь с этим .. это сохранить пустые поля для usertype, который обновляется с lastInsertID

+0

я не вижу beginstransaction – Robert

+0

Обновлено с полным кодом – Goro

ответ

1

изменений, за исключением

$sql = $pdo->prepare("INSERT INTO users (usertype) 
        VALUE (:user_id)"); 

к этому

$sql = $pdo->prepare("UPDATE users SET usertype=:user_id WHERE user_id=:user_id"); 
+0

Да, это сделало трюк. Благодаря! – Goro

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