无法在php文件的查询中获取变量

时间:2016-03-16 00:38:18

标签: php mysqli

<?php
      echo "
          <html>
            <body style=\"background-color:#d3ddd1\">
              <form method=\"post\" name=\"report\" >
              <p>Counselor Report</p>
              <p>Enter email address</p>
              <input type=\"email\" name=\"email\" /><br />
              <p>Select a start date</p>
              <input type=\"date\" name=\"from\" /><br />
              <p>Select an end date</p>
              <input type=\"date\" name=\"until\" /><br />
              <p>Click Below</p>
              <input type=\"submit\" value=\"run report\" />

              </form>
            </body>
           </html> ";
  function get_report() 
     {
      $e_mail = $_POST['email'];
      include ('dbconn.php');
      $sql = "SELECT a.user_email,a.ID, b.ID, b.post_title \n"
       . " FROM\n"
       . " wp_posts b\n"
       . " INNER JOIN\n"
       . " wp_users a\n"
       . " ON\n"
       . " a.user_email ='".$e_mail."' AND a.ID=b.ID\n"
       . " ORDER BY\n"
       . " post_date";
       $result = $conn->query($sql);
         var_dump($results);
 }
  get_report();
  ?>'

第一次提问。 我可以使用phpmyadmin在查询中使用真实的电子邮件地址并获得正确的返回,我尝试将php查询中的变量合并到db并获得NULL的返回,这不是相同的返回。没有报告错误。

问题: 我使用什么语法将变量用于启用php的功能。?

1 个答案:

答案 0 :(得分:2)

$result = $conn->query($sql);
var_dump($results);

检查变量名称的拼写。

话虽如此,你真的应该为此准备一份声明。语法是

$sql = "SELECT a.user_email, a.ID, b.ID, b.post_title
         FROM wp_posts b
         INNER JOIN wp_users a
           ON a.ID = b.ID
         WHERE a.user_email = ?
         ORDER BY post_date";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $e_mail);  // 's' means param is a string
$stmt->execute();
$result = $stmt->get_result(); // returns a mysqli_result object

条款WHERE a.user_email = ?包含一个参数占位符,稍后将通过调用mysqli_stmt::bind_param()填写。

除了帮助防止SQL注入之外,预准备语句还可以自动处理参数类型匹配,引用和转义。

按照我的习惯,我将错误处理作为读者的练习。