2013-02-15 165 views
0

對不起,我是一個新手,使一個簡單的頁面,填充一系列的div。我道歉,如果有什麼我缺少的是rudimentary-愚蠢mysql_fetch_assoc():錯誤

我得到一個

警告:mysql_fetch_assoc():提供的參數不就行了56

行一個有效的MySQL結果資源56開始:

<?php 
$result = mysql_query('SELECT * FROM `all_products`;'); 
while($row = mysql_fetch_assoc($result)){ 
echo '<div class="product">'; 
echo '<img src="images/product-\'.$row[\'id\'].\'s.jpg" onclick="JavaScript:newPopup(\'images/product-\'.$row[\'id\'].\'.jpg\');">'; 
echo '<span class="tiger" data-name="show" data-price="show" data-text="Buy Now">\'.$row[\'id\'].\'</span>\'.$row[\'description\'].\'</div>'; 
} 
?> 

任何建議都非常感謝它已經幾個小時大聲笑。

-AR

UPDATE ---

新代碼:

<?php 
$link = mysqli_connect('ip', 'usr', 'pass'); 

if (!$link) { 
die('Connect Error (' . mysqli_connect_errno() . ') ' 
     . mysqli_connect_error()); 
} 
mysqli_select_db($link, "db"); 
?> 

<?php 
$result = mysqli_query($link, "SELECT * FROM `all_products`") or die(mysql_error()); 
while($row = mysqli_fetch_assoc($result)){ 
echo '<div class="product">'; 
echo '<img src="images/product-\'.$row[\'id\'].\'s.jpg" onclick="JavaScript:newPopup(\'images/product-\'.$row[\'id\'].\'.jpg\');">'; 
echo '<span class="tiger" data-name="show" data-price="show" data-text="Buy Now">\'.$row[\'id\'].\'</span>\'.$row[\'description\'].\'</div>'; 
} 
?> 

我已經改變現在SQLI我得到多個div,每行一個,但內部的每個格是消息

警告:mysql_num_rows():提供的參數不是/classes/class.product.php中的有效MySQL結果資源o第16行 產品無效'。$ row ['description']。'

最新情況:

希望一些背景將幫助 - 此代碼:

<div class="product"> 
<img src="images/product-1s.jpg" onclick="JavaScript:newPopup('images/product-1.jpg');"> 
<span class="tiger" data-name="show" data-price="show" data-text="Buy Now"> 
1</span>Lorem Ipsum Dolar</div> 

作品完美的一切是,該班已編碼和mysql_主要使用方式。

我想要做的就是在表格上的每一行粘貼id#和desc。我想不能像我想的那樣簡單地完成。我可以手動編寫所有內容並使所有工作都能正常工作,但顯然這並不理想。

是否有另一種方法可以讓我在已發生的事情之外執行此操作?

此功能:

class Product{ 
var $error = ''; 
var $msg = ''; 
public function all(){ 
$result = mysql_query("SELECT * FROM " . PFX . "products WHERE active = 1"); 
$products = array(); 
while($rows = mysql_fetch_assoc($result)){ 
    $products[]=$rows; 
    } 
return $products; 
} 

已經完成,我可以調用它來填充從我需要的數據庫變量?

+0

你連接到MySQL? – 2013-02-15 23:31:49

+0

http://php.net/mysql_error – zerkms 2013-02-15 23:35:47

+0

@John我相信是這樣,沒有連接時可能會發生資源錯誤嗎?如果我註釋掉我的連接代碼,我會得到「Warning:mysql_fetch_assoc():提供的參數不是在56行的/home/roshad11/public_html/shop/index.php中的有效MySQL結果資源」 – user1572291 2013-02-15 23:37:41

回答

2

最簡單的方法是檢查是否$resultfalse,看到mysql_query

返回值
對於SELECT,SHOW,描述,解釋等語句返回的結果集,請求mysql_query()成功返回的資源,或者錯誤爲

或使用or die(...)

$result = mysql_query('SELECT * FROM `all_products`') or die(mysql_error()); 

您應該考慮切換到mysqliPDO,因爲mysql_*功能已被棄用。

更新到您的更新:

這不適合在一起。

  • 您在修改後的代碼中沒有mysql_num_rows()
  • 請勿混用mysql_*mysqli_*
  • 最後,變量不會被單引號'代替,所以我沒有看到這個錯誤消息來自哪裏。

UPDATE2

由於這種方法不使用任何對象的成員,你可以將它定義爲一個靜態成員函數

public static function all(){ 
    $result = mysql_query("SELECT * FROM " . PFX . "products WHERE active = 1"); 
    $products = array(); 
    while($rows = mysql_fetch_assoc($result)){ 
     $products[]=$rows; 
    } 
    return $products; 
} 

,然後把它作爲

$products = Product::all(); 
+0

我修改了代碼 - 任何建議? – user1572291 2013-02-16 00:44:46

+0

@ user1572291請看更新後的答案。 – 2013-02-16 00:57:18

+0

好吧,首先謝謝爲了幫助我,我知道這些東西中有一些是101,我希望你在這個時候不會感到惱火。 :P 不久將更新問題 - – user1572291 2013-02-16 02:13:34