傻mysql_fetch_assoc():错误

时间:2013-02-15 23:30:31

标签: php html mysql

抱歉,我是一个新手,制作一个填充一系列div的简单页面。如果我缺少的是基本的话,我道歉 -

我正在

  

警告: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,每行一个但每个div内部都是消息

  

警告:mysql_num_rows():提供的参数不是第16行/classes/class.product.php中的有效MySQL结果资源   无效的产品'。$ row ['description']。'

UPDATE -

希望有些背景可以帮助 - 这段代码:

<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;
}

已经完成,我可以调用它来填充我需要的数据库中的变量吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法是检查$result是否为false,参见mysql_query

  

返回值
  对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE

或使用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();
相关问题