按照教程后mysql分页错误

问题描述:

我想添加一个简单的分页,但从msql更改为mysqli后,我似乎无法得到它的权利。我不能让我的头靠近它,我只是从它开始。 我按照教程,但仍然会得到错误。按照教程后mysql分页错误

对于我缺乏知识感到遗憾,但我错过了什么?

<?php 
$db = new mysqli("host", "username", "password", "mydatabase"); 

if($db->connect_errno > 0){ 
die('Unable to connect to database [' . $db->connect_error . ']'); 

} 
$rec_limit = 10; 


$sql = "SELECT COUNT(photo)FROM employees"; 
$retval = mysql_query($sql, $db); 
if(! $retval) 
{ 
die('Could not get data: ' . mysql_error()); 
} 
$row = mysql_fetch_array($retval, MYSQL_NUM); 
$rec_count = $row[0]; 

if(isset($_GET{'page'})) 
{ 
$page = $_GET{'page'} + 1; 
$offset = $rec_limit * $page ; 
} 
else 
{ 
$page = 0; 
$offset = 0; 
} 
$left_rec = $rec_count - ($page * $rec_limit); 

$sql = "SELECT photo, link". 
"FROM employees ". 
"LIMIT $offset, $rec_limit"; 

$retval = mysql_query($sql, $db); 
if(! $retval) 
{ 
die('Could not get data: ' . mysql_error()); 
} 


while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 




echo "<br /><br />"; 

echo '','<img src="/upload/' . $row->photo . '" border=0>'; 

echo '', $row->link; 



if($page > 0) 
{ 
$last = $page - 2; 
echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a> |"; 
echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>"; 
} 
else if($page == 0) 
{ 
echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>"; 
} 
else if($left_rec < $rec_limit) 
{ 
$last = $page - 2; 
echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a>"; 
} 
mysql_close($db); 
?> 
+0

说错误在这里:$ retval = mysql_query($ sql,$ db); – 2013-03-17 14:46:41

+0

可以肯定的是,在定义$ db的行中确实有实际的db值在那里吗? – 2013-03-17 14:48:58

+0

是的,它连接到数据库,我可以回显结果,但试图添加分页即时获取错误 – 2013-03-17 14:59:50

您在混合mysqli_*mysql_*函数。

请选择你要使用哪一种样式:(new MySQLi,ECT)程序的风格(mysqli_connectmysqli_query)或对象样式

不能混合那些2,你不能也混2个不同的库(mysql和mysqli的)

了解更多关于不同风格on PHP.net(例子还展示了如何使用的mysqli)

+0

还注意到有一个在查询中的空缺(FROM之前): '$ sql =“SELECT COUNT(photo )FROM employees“' ^ – Ander2 2013-03-17 14:52:19

+0

@ Ander2虽然我同意它应该修复,但在MySQL中没有任何意义:http://sqlfiddle.com/#!2/b2f8c/3 – 2013-03-17 14:54:17

+0

你是对的。首先通知该功能。谢谢。 – Ander2 2013-03-17 14:56:21

$sql = "SELECT COUNT(photo)FROM employees"; 
          ^--- missing a space here 

$sql = "SELECT photo, link". 
          ^--- missing space here 
"FROM employees ". 

如果这段代码来自教程,我建议你把它丢掉。你的代码绝对没有错误处理,并且简单地假设一切都成功了。一个正确的书面教程将有适当的错误检测/处理。并且还建议不要考虑mysql _ *()函数,因为它们已被废弃/废弃。

+0

,这个空间没有意义(http://sqlfiddle.com/#!2/b2f8c/3)。 – 2013-03-17 15:10:38