2016-05-09 55 views
1

我想從一個特定的行或基於id_codepeople表中獲取電子郵件...也就是說,如果我輸入一個id_code = 456,如果id代碼存在必須檢索該特定id_code的電子郵件,並生成令牌號並將令牌號插入到人員表中。在令牌生成並插入後,必須使用令牌和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

使用正確的太對第二查詢綁定(已分配$ id_code)

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 。您可能想要使用的值存儲在$_POST['id_code']中,因此您應該在IF條件之前執行類似$id_code = $_POST['id_code'];的操作,否則$id_code未定義。

更新:你已經做到了$ccode,使用這個綁定,它應該工作。

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

換成

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

UPDATE

請嘗試以下代碼併發布的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_code,如果該ID存在,我必須得到電子郵件,否則發出警告。 – roger13

+0

'$ idcode'仍然不等於'$ id_code'。你應該啓用errormessages以便更容易調試:'ini_set('error_reporting',E_ALL);''ini_set(「display_errors」,1);'在腳本的開頭應該啓用它。 – Michael

+0

錯別字,現在我的錯誤已經改變了,我只需要取電子郵件,其中id_code等於我輸入的值,這個腳本有什麼問題? – roger13

相關問題