2013-02-15 136 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