[英]PHP /MYSQL Search Form Displaying Empty Results
拜托,我的代碼有什么問題,我試圖從數據庫中獲取搜索數據,如下所示
學生數據如下
注冊編號:全名:系:課程:級別:組。
在HTML搜索頁面上
<html>
<h2> Enter your matric number to connect to others studying your course </h2>
<form action="demo.php" method="post">
<b> ReG </b><input type="text" Name="find">
<input type="submit" value="Submit" />
</form>
</html>
PHP端
<table border="1">
<tr>
<th>Student Full Name</th>
<th> Faculty</th>
<th> Program</th>
<th> Entry Year</th>
<th> Study Group</th>
<th> Group Members Contact</th>
<th> Group Leader Contacts</th>
</tr>
<?php
$conn=mysqli_connect("localhost", "root", "", "student");
// Check connection
if($conn=== false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$q = $_POST['find'];
if ($q == "")
{
echo "<p>You forgot to enter a search term!!!";
exit;
}
$sql = "SELECT * FROM study_circle WHERE matric LIKE $q ";
$result = mysqli_query($conn, $sql);
if ($result)
{
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>";
echo $row['full_name'];
echo "</td>";
echo "<td>";
echo $row['faculty'];
echo "</td>";
echo "<td>";
echo $row['program'];
echo "</td>";
echo "<td>";
echo $row['entry_year'];
echo "</td>";
echo "<td>";
echo $row['study_group'];
echo "</td>";
echo "<td>";
echo $row['group_members'];
echo "</td>";
echo "<td>";
echo $row['group_leader'];
echo "</td>";
echo "</tr>";
echo "<br/>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
每次嘗試時,即使填充了數據庫,它也會帶來Empty結果
現在,它在我的Localhost系統上,請任何有經驗的人提供幫助,這對Programming來說是新手。 我將很樂意解決此問題
您的代碼在這里誤解了false
值的含義:
if ($result)
{
//...
} else {
echo "0 results";
}
$result
中的false
值並不表示搜索未找到任何內容,而是表示查詢失敗並顯示error 。 要獲取錯誤,請使用mysqli_error
:
if ($result)
{
//...
} else {
echo "There was an error: " . mysqli_error($conn);
}
在這種情況下,該錯誤很可能是SQL代碼中的語法錯誤,因為您是直接將用戶輸入連接到SQL代碼。 這也稱為SQL注入漏洞 。 這里有一些很好的信息可幫助您開始進行更正 ,包括這里特別介紹如何使用LIKE
運算符使用查詢參數 。 最簡單的是,您將要使用帶有查詢參數的預備語句,而不是像現在那樣使用字符串插值。
嘗試在搜索字符串的開頭和結尾添加通配符:
$sql = "SELECT * FROM study_circle WHERE matric LIKE '%$q%'";
您將需要獲取搜索數據的行數。 這將保證記錄是否存在,例如。
$rowcount = mysqli_num_rows($result);
然后執行if語句。
參見下面的代碼。
<?php
$conn=mysqli_connect("localhost", "root", "", "student");
// Check connection
if($conn=== false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$q = $_POST['find'];
if ($q == "")
{
echo "<p>You forgot to enter a search term!!!";
exit;
}
$sql = "SELECT * FROM study_circle WHERE matric LIKE $q ";
$result = mysqli_query($conn, $sql);
$rowcount = mysqli_num_rows($result);
if( $rowcount ){
$row = mysql_fetch_array($result);
echo "<tr>";
echo "<td>";
echo $row['full_name'];
echo "</td>";
echo "<td>";
echo $row['faculty'];
echo "</td>";
echo "<td>";
echo $row['program'];
echo "</td>";
echo "<td>";
echo $row['entry_year'];
echo "</td>";
echo "<td>";
echo $row['study_group'];
echo "</td>";
echo "<td>";
echo $row['group_members'];
echo "</td>";
echo "<td>";
echo $row['group_leader'];
echo "</td>";
echo "</tr>";
echo "<br/>";
exit;
}else{
echo "0 results";
}
}
mysqli_close($conn);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.