1

検索を実行するときにMySQLテーブルの名前を変更(およびクエリで更新)した後、次の警告が表示されます。

警告: mysql_result() [function.mysql-result]: D:\dev\search.php 行 94 の 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 に答える