2016-05-09 11 views
1

id_codepeopleテーブルから特定の行から電子メールを取得しようとしています...つまり、IDコードが存在する場合はid_code = 456と入力します。その特定のid_codeの電子メールを取得し、トークン番号を生成し、そのトークン番号をpeopleテーブルに挿入する必要があります。トークンが生成されて挿入された後、トークンとIDとともにURLリンクを送信する必要があります。phpとmysqlを使用してテーブルからデータを取得する方法

私は初心者なので、どうすればいいですか、誰かが私がどこに間違っているか教えていただけますか?

<?php 
    error_reporting(1); 
    session_start(); 

    include 'includes/db.php'; 
    include 'includes/token.php'; 

    //global 
    $id_code = strtoupper(trim($_POST['id_code'])); 

    if ($_POST["Submit"] == "Submit") { 
     $sql = "SELECT * FROM people WHERE id_code = :id_code"; 
     $stmt = $pdo->prepare($sql); 
     $stmt->bindValue(':id_code', $id_code); 
     $stmt->execute(); 
     $result = $stmt->fetch(PDO::FETCH_ASSOC); 
     if (!empty($_POST['id_code'])) { 
      $sql = "SELECT email FROM people WHERE id_code = $id_code"; 

      $stmt = $pdo->prepare($sql); 
      $stmt->bindValue(':id_code', $id_code); 
      $stmt->execute(); 
      $result2 = $stmt->fetch(PDO::FETCH_ASSOC); 
     } else { 
      //echo "<br/>Validated: FALSE<br/>"; die(); 
      echo 'You are not Registered..Please Contact support'; 
     } 
    } 
?> 
+0

テーブルのid_codeは何ですか?人のIDまたはメッセージのID? –

答えて

0

使用し

if (!empty($_POST['id_code'])) { 
     $sql = "SELECT email FROM people WHERE id_code = :id_code"; 

     $stmt = $pdo->prepare($sql); 
     $stmt->bindValue(':id_code', $id_code); 
     echo $email; 
     $stmt = $pdo->prepare($sql); 
1

は、私の知る限り$id_codeを見ることができるように定義されていない(あなたは$のid_codeが割り当てられている)、あまりにも2番目のクエリのために結合正しい:ここ

は、私がこれまでなかったものです。使用したい値は$_POST['id_code']に格納されていますので、IF条件の前に$id_code = $_POST['id_code'];のようにする必要があります。そうでない場合は、$id_codeは未定義です。

更新:すでに$ccodeでこれを行いましたが、これをバインディングに使用するとうまくいくはずです。

$stmt->bindValue(':id_code', $ccode); 

UPDATE

に置き換え

$stmt->bindValue(':id_code', $id_code); 

)(次のコードを試してみてのvar_dumpの結果を投稿してください。

<?php 
    error_reporting(1); 
    session_start(); 

    include 'includes/db.php'; 
    include 'includes/token.php'; 

    //global 
    $id_code = strtoupper(trim($_POST['id_code'])); 

    var_dump("ID: ".$id_code); 

    if ($_POST["Submit"] == "Submit") { 
     $sql = "SELECT * FROM people WHERE id_code = :id_code"; 
     $stmt = $pdo->prepare($sql); 
     $stmt->bindValue(':id_code', $id_code); 
     $stmt->execute(); 
     $result = $stmt->fetch(PDO::FETCH_ASSOC); 

     var_dump("Result: ".$result); 

     if (!empty($_POST['id_code'])) { 
      $sql = "SELECT email FROM people WHERE id_code = $id_code"; 

      $stmt = $pdo->prepare($sql); 
      $stmt->bindValue(':id_code', $id_code); 
      $stmt->execute(); 
      $result2 = $stmt->fetch(PDO::FETCH_ASSOC); 

      var_dump("Result2: ".$result2); 

     } else { 
      //echo "<br/>Validated: FALSE<br/>"; die(); 
      echo 'You are not Registered..Please Contact support'; 
     } 
    } 
?> 

はあなたから任意の出力を取得してくださいスクリプト?

+0

私はタイプミスをしました。コードは$ idcode = strtoupper(trim($ _ POST ['id_code']))でした。私はそれをグローバルにしました。どうすればid_codeをタイプするつもりなので、私はその電子メールから[email protected]という電子メールを受け取るでしょう。もしそのIDが存在するなら、私は電子メールの問題を警告しなければなりません。 – roger13

+0

'$ idcode'はまだ' $ id_code'と等しくありません。 'ini_set( 'error_reporting'、E_ALL);と' ini_set( "display_errors"、1); 'は、スクリプトの始めにそれを有効にする必要があります。 – Michael

+0

typoもう一度、私の誤り今それは変更されました、私はid_codeが私が入力した値と等しい電子メールをフェッチする必要がある、何がスクリプトに間違っていますか? – roger13

関連する問題