簡體   English   中英

PHP / MYSQL搜索表單顯示空結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM