尝试使用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;
答案 0 :(得分:2)
而不是
$field=$_post($conn,'field');
也许你的意思是
$field=$_POST['field'];
此外,即使未定义结果,也会在结尾处使用$ result:
$rows = $result->num_rows;
此外,您永远不会输出任何数据并进行打印。您只需将其存储在变量中即可。
在任何情况下:通过将表单数据直接写入查询字符串,您所做的是危险的。我建议您将PDO与Named 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'];