2010-01-19 52 views
0

可能重复:
Warning: mysql_fetch_* expects parameter 1 to be resource, boolean given error在PHP选择下一行

我有一个MySQL数据库的记录集,我试图让网页上的选择下一个和上一个按钮。我有问题在PHP编码,但是;任何帮助是极大的赞赏。

我的记录没有附加自动增量ID。

我的代码如下:

$result = mysql_query($query) or die("Couldn't execute query"); 

$row_number = 1; 

while ($row = mysql_fetch_assoc($result)) { 
$row_number ++; 

if ($row_number <= mysql_num_rows($result)) { 
$nextRecord=mysql_data_seek($result,$row_number); 

    while ($nextRow = mysql_fetch_row($nextRecord)) { 
     echo $nextRow['family_accession_number'];} 

当我尝试运行脚本,下面的消息出来了:

Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 2 is invalid for MySQL result index 3 (or the query data is unbuffered) in C:\xampp\htdocs\survey\continuetitle.php on line 23 

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\survey\continuetitle.php on line 25 

第23行是:$nextRecord=mysql_data_seek($result,$row_number);

谢谢!

编辑: 我改变while ($nextRow = mysql_fetch_row($nextRecord)) {

while ($nextRow = mysql_fetch_row($result)) { 

但线发生同样的错误23

编辑:

在SQL查询发现错误,只返回一行。

+0

也许你应该解释为什么你想让你的代码到当前游标的末尾。 – 2010-01-19 02:47:02

+0

对不起,我在我的SQL $查询中发现一个错误;这就是为什么它不起作用。 – Tim 2010-01-19 02:56:52

回答

0

尝试

$nextRecord=mysql_data_seek($result,$row_number-1); 
+0

有趣的是,当我添加-1时,错误消失了,但它返回当前记录,而不是下一个。 – Tim 2010-01-19 02:42:34

+0

我在我的SQL $查询中有错误;对错误感到抱歉。 – Tim 2010-01-19 02:57:36

0

这种方法意味着数据库多提取和返回的整个数据集到客户端(其中寻求进行)。一个更有效的解决办法是使用LIMIT子句来使数据库返回只有一行到客户端:

$select_qry=$select_qry . " LIMIT $offset,1"; 

C.

0

嗯,这是一个很长的时间,因为我使用通过直接访问数据库mysql_功能。我正在使用AdoDB,我建议你自己尝试一下。如果使用ADODB会是这样改写你上面的代码:

//create a connection 
$adodb = &ADONewConnection($dsn); 
$adodb->SetFetchMode(ADODB_FETCH_BOTH); 

//Execute a query 
$rs =& $adodb->Execute($query); 
if (! $rs) 
{ 
    echo 'Error occured: ' . $adodb->ErrorMsg(); 
    die(); 
} 
//check if query return any row 
if ($rs->RecordCount() > 0) 
{ 
    while ($row = $rs->FetchRow()) 
    { 
    echo $row['family_accession_number']; 
    } 
} 

如果你想有prev和next链接,那么你必须有这方面的页面处理。例如,在下面的代码,它将返回只有10行,该页面将需要有prev和next链接可以获得一个或下一个10行数据的

//get page parameter 
$page = intval($_GET['page']); 
if ($page <= 0) 
{ 
    $page = 1; 
} 
//default value 
$per_page = 10; 
//calculate start from the $page value 
$offset = ($page - 1) * $per_page; 

//create a connection 
$adodb = &ADONewConnection($dsn); 
$adodb->SetFetchMode(ADODB_FETCH_BOTH); 

//execute query 
$rs =& $adodb->SelectLimit($query, $per_page, $offset); 
if (! $rs) 
{ 
    echo 'Error occured: ' . $adodb->ErrorMsg(); 
    die(); 
} 
//check if query return any row 
if ($rs->RecordCount() > 0) 
{ 
    while ($row = $rs->FetchRow()) 
    { 
    echo $row['family_accession_number']; 
    } 
    //print prev and next link 
    echo '<a href="THIS_PAGE_URL?page='.($page-1).'">Prev</a> '; 
    echo '<a href="THIS_PAGE_URL?page='.($page+1).'">Next</a> '; 
} 
else 
{ 
    echo 'No result'; 
} 

我希望这是你想要的去做。