0

PHPコードに問題があります。問題は、指定されたものをフィルタリングしているが、3番目のレコードが失われるはずの場所にエラーを吐き出しているWHERE句です。コードは次のとおりです。

<body>
<?php
$username="USERNAME";
$password="PASSWORD";
$database="DATABASE";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM searchacts";
$result=mysql_query($query);
$num=mysql_numrows($result);
$result = mysql_query("SELECT * FROM searchacts
WHERE category='Party Bands'");
mysql_close();
?>
<?php
$i=0;
while ($i < $num) {

$image=mysql_result($result,$i,"image");
$name=mysql_result($result,$i,"name");
$category=mysql_result($result,$i,"category");
$description=mysql_result($result,$i,"description");
$stamps=mysql_result($result,$i,"stamps");
$stickmen=mysql_result($result,$i,"stickmen");
$price=mysql_result($result,$i,"price");
$view=mysql_result($result,$i,"view");
$actpagelink=mysql_result($result,$i,"actpagelink");
?>
<a href="<?php echo $actpagelink; ?>" class="searchitem">
<div class="searchimage"><img src="<?php echo $image; ?>"/></div>
<div class="searchtext">
  <div class="searchname"><?php echo $name; ?></div>
  <div class="searchcategory"><?php echo $category; ?></div>
  <div class="searchdescription"><?php echo $description; ?></div>
</div>
<div class="searchstamps"><img src="<?php echo $stamps; ?>" /></div>
<div class="searchstickmen"><img src="<?php echo $stickmen; ?>" /></div>
<div class="searchprice"><span class="pricefrom">from</span><?php echo $price; ?></div>
<div class="searchview"><img src="<?php echo $view; ?>" /></div>
</a>
<?php
$i++;
}
?>
</body>

それはおそらく非常に単純なものです、これはエラーです:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 3 in /home/enterta1/public_html/searchtestingv1.php on line 31

これは何行も続く

4

4 に答える 4

0

タイプミスがあります

 $num=mysql_numrows($result);

する必要があります

$num = mysql_num_rows($result);
于 2013-02-24T00:00:03.247 に答える
0

あなたは行数を見つけています

$num=mysql_numrows($result);

最後のクエリの前であるため、 $num は最後のクエリによって返された行数を表していません。

$result = mysql_query("SELECT * FROM searchacts WHERE category='Party Bands'");
于 2013-02-24T00:00:36.957 に答える
0

$num次のステートメントで、フェッチされたすべてのセット/行をカウントします。

SELECT * FROM searchacts

一方、選択したいくつかのデータのみを出力しようとしています:

SELECT * FROM searchacts WHERE category='Party Bands'

したがって、2 番目のクエリは常に最初のクエリ以下の行になります。そのエラーが発生します。

于 2013-02-24T00:08:57.423 に答える
0

WHERE大丈夫そうに見えますが...私にとって、これはデータベースからデータを引き出す奇妙な方法です。

これを行う:

  1. mysql_close()ファイルの最後に置く

  2. 取得する必要はありません$num

  3. 行の後$result=...

    while ($row=mysql_fetch_assoc($result)) $acts[]=$row;
    
    // now all your records are saved in array $acts, e.g.
    // $acts[0]['name'], $acts[0]['category'], where...
    // the first dimension of the array [0] contains the number of the record...
    // the second the field-name from your database!
    
  4. $acts のすべてを出力するには、次のようにします。

    foreach ($acts as $act) { ?>
    
        ...
        <div class="searchimage"><img src="<?=$act['image']?>"/></div>
        <div class="searchtext">
            <div class="searchname"><?=$act['name']?></div>
            <div class="searchcategory"><?=$act['category']?></div>
            <div class="searchdescription"><?=$act['description']?></div>
        </div>
        ... <? // you get the idea ;-)
    
    } // foreach
    
于 2013-02-24T00:01:18.887 に答える