2016-05-09 40 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

相关问题