尝试使用PHP从MySQL获取数据时出错

时间:2016-10-18 04:31:18

标签: php mysql

尝试使用PHP从Mysql数据库获取数据时,以下代码会收到一条消息:

获取错误:

  

未定义的变量结果。

<?php 
require_once 'login.php';
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die($conn->connect_error);
echo <<<_END
 <form action="fetchdata.php" method="post"><pre>
   Enter Country <input type="text" name="field">  
                <input type="submit" value="Display Records">
 </pre></form>
_END;

if (isset($_POST['field'])) {
  $field=$_post($conn,'field');
  $query="SELECT * FROM customers WHERE Country = '$field'";
  $result=$conn->query($query);
  if (!$result) die($conn->error);
  }

$rows = $result->num_rows;

3 个答案:

答案 0 :(得分:2)

而不是

  $field=$_post($conn,'field');

也许你的意思是

  $field=$_POST['field'];

此外,即使未定义结果,也会在结尾处使用$ result:

$rows = $result->num_rows;

此外,您永远不会输出任何数据并进行打印。您只需将其存储在变量中即可。

在任何情况下:通过将表单数据直接写入查询字符串,您所做的是危险的。我建议您将PDONamed Parameters一起使用。也许可以阅读SQL injections

这是另一个关于SQL注入的一个很好的答案的stackoverflow问题。它包括PDO和mysqli:https://stackoverflow.com/a/60496/6637731

答案 1 :(得分:0)

在不知道如何完成对此代码的请求的情况下,一个猜测是isset($_POST['field'])返回false,因此变量$result永远不会被定义,但您在{{1}中无论如何都会使用它}。

答案 2 :(得分:0)

你在下面的行中犯了一个错误。它应该是

$result->num_rows

$field=$_POST['field'];