0

我们使用新的 mysql 数据库进行了狗救援。它目前有 9 条记录(或 9 条狗),id 为 1 - 9。您可以使用下一个或上一个按钮单击它们。当 id 在 1-9 之外(如“nothing”或 0“),当我们在记录 1 并单击 prev 时它找不到东西(因为什么都没有),或者当你在记录(或狗)9 和由于没有更多记录,请单击下一个(或相同的错误)。

脚本:(部分)

$dog_id = $_GET['id'];
include("conn.inc.php");
// GET THE DOGGY
$result = mysql_query("SELECT * FROM pp_dogs WHERE id='$dog_id';");
$dog = mysql_fetch_assoc($result);
extract($dog);

// GET NEXT DOGGY
$next_result = mysql_query("SELECT * FROM pp_dogs WHERE id > $dog_id ORDER BY id LIMIT     1;");
$next_dog = mysql_fetch_assoc($next_result);

// GET PREV DOGGY
$prev_result = mysql_query("SELECT * FROM pp_dogs WHERE id < $dog_id ORDER BY id LIMIT 1;");
$prev_dog = mysql_fetch_assoc($prev_result);

mysql_close();

错误信息:

警告:extract() 期望参数 1 是数组,布尔值在第 13 行的 /home/content/15/9729315/html/dog_detail.php 中给出

警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在第 18 行的 /home/content/15/9729315/html/dog_detail.php 中给出

警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在第 22 行的 /home/content/15/9729315/html/dog_detail.php 中给出

第 13、18 和 22 行在上面的脚本中。

任何人都有一个很好的解决方案,可以在数据库中没有更多狗时禁用下一个上一个按钮,或者它从 1 (单击上一个)转到 9 - 最后一条记录?

4

1 回答 1

0

首先获取第一条和最后一条记录,然后使用脚本中的这些记录来激活或禁用按钮

include("conn.inc.php");

// Get first and last records
$first_record = mysql_query("SELECT id FROM pp_dogs ORDER BY id ASC LIMIT 1");
$last_record =  mysql_query("SELECT id FROM pp_dogs ORDER BY id DESC LIMIT 1");
   //Note, mysql_ functions are depreciated. You can use these to test, but you should change to mysqli or PDO

// Get current Dog ID
if ($_GET['id'] < $first_record || $_GET['id'] > $last_record){
   // Either set $dog_id = $first_record OR give message that $dog_id does not exist
}
else {
     $dog_id = $_GET['id'];} //Still need to escape to prevent injection

// GET THE DOGGY
$result = mysql_query("SELECT * FROM pp_dogs WHERE id='$dog_id';");
$dog = mysql_fetch_assoc($result);
extract($dog);

// GET NEXT DOGGY
if ($dog_id < $last_record){
    $next_result = mysql_query("SELECT * FROM pp_dogs WHERE id > $dog_id ORDER BY id LIMIT     1;");
    $next_dog = mysql_fetch_assoc($next_result);
}
else {
     // Disabled Next Button  ie. <input type="button" value="Next" DISABLED />
     }

// GET PREV DOGGY
if ($dog_id > $first_record){
    $prev_result = mysql_query("SELECT * FROM pp_dogs WHERE id < $dog_id ORDER BY id LIMIT 1;");
     $prev_dog = mysql_fetch_assoc($prev_result);
}
else {
     // Disabled Previous Button  ie. <input type="button" value="Previous" DISABLED />
     }
mysql_close();

此外,您当前的查询对于 SQL 注入已经成熟,并且myslq_函数不应该用于新的开发。更改为mysqli 或 PDO并确保您安全逃脱!

于 2012-08-24T03:37:37.140 回答