我目前正在为我的学校建立一个图书馆网站,并且在页面上搜索栏时返回多个结果时遇到问题。这是代码:
PHP:
<?php
error_reporting(E_ALL);
$cont = mysqli_connect('host','username','password', 'db') or die(mysqli_connect_error());
$output='';
if(isset($_POST['searchVal'])){
$searchkey= $_POST['searchVal'];
$searchkey=preg_replace("#[^0-9a-z]#i", "", $searchkey);
$query = mysqli_query($cont, "SELECT * FROM books WHERE Title LIKE
'%$searchkey%' OR Author LIKE '%$searchkey%' OR ISBN_Other_code_no LIKE
'%$searchkey%' ") or die('couldnotconnnect');
$count = mysqli_num_rows($query);
if($count == 0){
$output="There was no search result!";
}else{
while($row=mysqli_fetch_array($query)){
$fname = $row['Title'];
$lname = $row['Author'];
$pname = $row['ISBN_Other_code_no'];
$output = "$fname $lname $pname </br>";
};
};
};
echo ($output);
?>
JS:
function searchq(){
var searchTxt = $("input[name='search']").val();
$.post("search.php", {searchVal: searchTxt}, function(output){
$("#output").html(output);
});
};
上面的代码只会在我的HTML中发布一个结果,当时应该有10个或更多。任何人都可以在代码中看到一个可能的错误,阻止它循环遍历SQL表中的所有语句吗?或者我是否必须在PHP中编写循环?
感谢您的帮助!
答案 0 :(得分:2)
将其他问题放在一边,突出显示你覆盖$output
而不是追加它。试试:
$output .= "$fname $lname $pname </br>";
注意:当我在手机上慢慢地笨拙地打字时,Qirel发布了同样的建议。随意发布它作为答案。