1

我有一个奇怪的问题,在重命名(并在查询中更新)MySQL 表后,当我执行搜索时收到此警告:

警告:mysql_result() [function.mysql-result]:无法跳转到第 94 行 D:\dev\search.php 中 MySQL 结果索引 8 的第 0 行

这是我的代码:

$query = "SELECT * FROM admin WHERE ((`status_desc` LIKE '%".$search."%') OR ('%".$search."%')) LIMIT 100";
$result = mysql_query($query) or die(mysql_error());
$num = mysql_numrows($result);

第 94 行是$status_id

<?php
$i=0;
while ($i < $num)
{
    $status_id = mysql_result($result,$i,"status_id");
    $status_des = mysql_result($result,$i,"status_desc");
?>
<tr>
    <td><a href="config_status_edit.php?status_id=<?php echo $status_id; ?>"><?php echo $status_id; ?></a></td>
    <td><?php echo $status_desc; ?></td>
</tr>
<?php
    $i++;
}
?>

怎么了?(我计划更新到 PDO,但现在我需要使用 mysql_query)

4

2 回答 2

0

核实$num

if ($num > 0) {
    echo "rows found";
    } else {
    echo "none found";
}

 WHERE (`status_desc` LIKE '%".$search."%' OR `status_desc`LIKE '%".$othersearch."%')
 WHERE (`status_desc` LIKE '%".$search."%' OR `other_column`LIKE '%".$search."%')

在 sql 客户端中运行您的查询,我怀疑这是问题所在。

于 2013-09-08T16:14:50.920 回答
0

使用 mysql_fetch_* 函数代替mysql_result

$query = "SELECT * FROM admin WHERE ((`status_desc` LIKE '%".$search."%') OR ('%".$search."%')) LIMIT 100";
$result = mysql_query($query) or die(mysql_error());

while ( ($row=mysql_fetch_assoc($result)) ) {
   $status_id = $row["status_id"];
   $status_des = $row["status_desc"];
?>
   <tr>
      <td>
         <a href="config_status_edit.php?status_id=<?php echo $status_id; ?>">
            <?php echo $status_id; ?>
         </a>
      </td>
      <td><?php echo $status_desc; ?></td>
   </tr>
<?php
}

它将循环直到它没有更多的行来获取,不需要设置/检查计数器等。

于 2013-09-08T16:08:35.733 回答