2013-02-23 65 views
0

我的PHP代碼有問題。問題是WHERE子句是過濾指定的,但也吐出了第三條記錄應該消失的一些錯誤。下面的代碼:PHP MYSQL 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 

肚裏對多條線路

+1

您不應該關閉連接,然後嘗試獲得更多結果。 – 2013-02-23 23:48:43

+2

請不要在新代碼中使用mysql_ *函數。他們不再被維護並被正式棄用。 – 2013-02-23 23:49:29

回答

0

$num計數在下面的語句全部取套/行:

SELECT * FROM searchacts 

同時,你想輸出數據僅適用於其中選定的幾個:

SELECT * FROM searchacts WHERE category='Party Bands' 

因爲,第二查詢總是導致行少於或等於第一行;你會得到那個錯誤。

0

你有

$num=mysql_numrows($result); 
一個錯字

應該是

$num = mysql_num_rows($result); 
0

您發現行

$num=mysql_numrows($result); 

數量的最後一個查詢之前,所以$ NUM並不代表你的最後的查詢返回的行數。

$result = mysql_query("SELECT * FROM searchacts WHERE category='Party Bands'"); 
0

WHERE似乎確定,但... 對我來說,這是從數據庫中提取數據的奇怪的方式。

這樣做:

  1. mysql_close()在文件的結尾

  2. 無需行$result=...後得到$num

  3. 做:

    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. 輸出所有的$行爲做:

    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