2016-06-20 4 views
1

これは私が試したものです... select文を使ってIDを取得しています電子メールがユーザーによって提供された電子メールと等しい親テーブル。親テーブルからIDを取得した後、このIDを子テーブルのparent_idフィールドに、子テーブルのフィールド値に設定します。PHPを使用するデータベーステーブルから特定のフィールド値を取得して、その単一フィールド値を新しいテーブルに入力するには

たとえば、私の親テーブルには、id、first_name、last_name、address、phone、email、picture_approvalおよびdateがあります。そして、子テーブルには、ID、child_first_name、child_last_name、および

// already connected to database successfully 
    { 
     try 
     { 
      $sql = 'INSERT INTO parents SET 
      first_name = :fname, 
      last_name = :lname, 
      address = :address, 
      phone = :phone, 
      email = :email, 
      picture_approval = :picture, 
      date = NOW()'; 

      $s = $pdo->prepare($sql); 
      $s->bindValue(':fname', $_POST['g_first_name']); 
      $s->bindValue(':lname', $_POST['g_last_name']); 
      $s->bindValue(':address', $_POST['address']); 
      $s->bindValue(':phone', $_POST['phone']); 
      $s->bindValue(':email', $_POST['email']); 
      $s->bindValue(':picture', $_POST['pictures']); 
      $s->execute(); 
     } 
     catch (PDOException $e) 
     { 
      $errors[] = 'Error adding parent to database.'; 
     } 
    } 
//the above code works perfectly 

をPARENT_IDしかし、その後、この次の部分が動作することはありませんがあります。

try 
    { 
     $sql = "SELECT id FROM parents WHERE email = :email"; 
     $s = $pdo->prepare($sql); 
     $s->bindValue(':email', $_POST['email']); 
     $s->execute(); 
     $s->bind_result($returned_id); 

     $s->fetch(); 

     $fieldValue = "$returned_id"; 


    } 
    catch (PDOException $e) 
    { 
     $errors[] = 'Error retrieving parent.'; 
    } 

は、それから私は、子供文のINTO私のINSERTを設定したい...しかし、私のSELECT文が表示されませんので、どのようにではない、実際に確認してくださいが正しく動作するように。 私はこれを見つけましたPHP function to extract a field value from a databaseしかし、それは値を出力するだけです、私はそれを別のテーブルに入れる必要があります。

+0

コードが順番に実行される場合は、 'PDO :: lastInsertID'を使用します。 http://php.net/manual/en/pdo.lastinsertid.php – bassxzero

+0

PDOまたはmysqliを使用していますか? ['bind_result'](http://php.net/manual/en/mysqli-stmt.bind-result.php)はmysqli関数であり、PDO関数ではありません。 –

+1

そのような質問でコードを大幅に変更しないでください*。そうすることで、質問全体が変更され、すでに与えられた回答が無効になります。新しい変更を加えた編集内容を既存のものと一緒に追加して投稿することもできます。そうでない場合は、別の質問がある場合は新しい投稿をしてください。 – Siyual

答えて

1
$fieldValue = $returned_id; 

の$ returned_idはlastInsertId()を使用し、引用符

+0

私は引用符を取り除こうとしましたが、それはまだ私のために何もしませんでした。 –

+0

私はそれを働かせました。今すぐチャイルドテーブルのINSERTステートメントに問題がある –

2

代わりに手動でIDを探しにすべきではありません。

$s->execute(); 
$returned_id = $pdo->lastInsertId(); 

次に、必要に応じて使用できます。

+0

残念ながら私は手動で検索する必要があります。親が2つの別の子を追加する場合、元の親のIDが2番目の子に設定されていることを確認したい...データベースに名前を追加しない他の親(最後に挿入されたID –

+0

あなたは素晴らしいです。コードには$ _SERVER ['DOCUMENT_ROOT']。/includes/db.incが含まれています。php '; ** $ sql = "SELECT id FROM parents where email =:email"; $ s = $ pdo-> prepare($ sql);$ s-> bindValue( ':email'、$ _POST ['email']); $ s-> execute(); $ returned_id = $ pdo-> lastInsertId(); $ error = $ returned_id; には、$ _SERVER ['DOCUMENT_ROOT']が含まれています。 '/includes/error.html.php'; exit(); ** –

+0

うれしいことにうまくいきました! – aynber

0

これを行うには、独自の関数を作成するのが最適です。

function getParentID($conn, $email) 
     { 
      $sql = "SELECT id FROM parents WHERE email='$email' LIMIT 1"; 
      foreach ($conn->query($sql) as $row) 
       { 
        $parentIDinside = $row['id']; 
       } 
      return $parentIDinside; 
     } 

次に、この関数を呼び出します。データベース接続と電子メールアドレスを渡すと、その電子メールアドレスに一致するparentIDが検索されます。この機能は何でも変更できます。

include 'includes/db.inc.php'; //my database connection that creates a new $pdo connection 

     $parentID = getParentID($pdo, $_POST['email']); 

は今変数$ PARENTIDは、提供された電子メールを使用して、データベースから実際のPARENTIDを格納し、あなたがINSERT文でそれを使用することができますかどこか他のあなたがしたいと思います。

関連する問題