0

抱歉,我是一个新手,正在制作一个填充一系列 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

更新 - -

新代码:

<?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():提供的参数不是 /classes/class.product.php 第 16 行的有效 MySQL 结果资源 Invalid Product'.$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;
}

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

4

1 回答 1

2

最简单的方法是检查是否$resultfalse,请参阅mysql_query

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

或使用or die(...)

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

您应该考虑切换到mysqlior PDO,因为mysql_*不推荐使用函数。

更新您的更新:

这不适合在一起。

  • mysql_num_rows()在修改后的代码中没有。
  • 不要mysql_*mysqli_*.
  • 最后,变量没有在单引号内替换',所以我看不出这个错误消息来自哪里。

更新2

由于此方法不使用任何对象成员,因此可以将其定义为静态成员函数

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();
于 2013-02-15T23:32:46.440 回答