我想算一下当我使用搜索引擎时得到的结果。
这是我的HTML代码:
<form id="header-search" action="car-list.php" method="get">
<input type="text" name="search" id="text" placeholder="Zoek hier.." class="quick-search" > </form>
Php代码:
$searchq = $_GET['search'];
$searchq = str_replace(' ','-',$searchq);
$con = mysql_connect("localhost","root","****");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("register-login", $con);
$result = mysql_query("SELECT COUNT(`car_id`)FROM `adver` WHERE merk LIKE '%$searchq%' OR titel LIKE '%$searchq%' OR model LIKE '%$searchq%'");
$row = mysql_fetch_array($result);
$total = $row[0];
$pages = new Paginator;
$pages->items_total = $total;
$pages->mid_range = 5;
$pages->paginate();
我这样做就知道“$ pages-&gt; items_total = $ total;”为了我的分页。
显示结果代码:
$searchq = htmlspecialchars($searchq);
$searchq = mysql_real_escape_string($searchq);
$photo=mysql_query("SELECT * FROM `adver` WHERE merk LIKE '%$searchq%' OR titel LIKE '%$searchq%' OR model LIKE '%$searchq%' ORDER BY car_id DESC $pages->limit")or die(mysql_error());
while($get_photo=mysql_fetch_array($photo)){
?>
<a href="<?php echo 'car-details.php?merk='.$get_photo['merk'] .'&car_id=' .$get_photo['car_id'] .'&titel=' .$get_photo['titel'] ;?>">
<img src="<?php echo $get_photo['path'] ; ?>" style="border:1px solid #021a40;" alt="<?php echo $get_photo['merk'] ;?>" }/>
Everyyhing工作正常,直到我搜索我的数据库中不存在的东西。所以$ result = 0.然后我得到了一个错误的错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“-10,10”附近使用正确的语法
当我将$ result = mysql_query更改为==&gt; (“SELECT COUNT(car_id
)FROM adver
”);
然后一切正常,请用我的分页号码...因为我算上每一个car_id,无论我在搜索什么...我得到的例子就是3个空页......
我希望有人可以帮我解决这个问题,谢谢
答案 0 :(得分:1)
您将获得 COUNT(*)的别名,并在以下字段后输入此字段:
$result = mysql_query("SELECT COUNT(*) AS total FROM `adver` WHERE merk LIKE '%$searchq%' OR title LIKE '%$searchq%' OR model LIKE '%$searchq%'") or die(mysql_error());
$row = mysql_fetch_array($result);
$total = $row['total']; //use alias
你有错误的字段名称(我认为): titel 将标题
要调试查询,您将在 mysql_query 调用后添加或die(mysql_error())(请参阅我的代码)
答案 1 :(得分:1)
分页总是很痛苦,似乎你指定了-10,10的限制(这是一个负面的开始);可能在$pages->limit
中,这似乎是个问题。
在不使用SQL_CALC_FOUND_ROWS
时是否存在性能问题?无论使用LIMIT子句,您都可以获得结果总数。