抱歉,我是一个新手,制作一个填充一系列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;
}
已经完成,我可以调用它来填充我需要的数据库中的变量吗?
答案 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());
您应该考虑切换到mysqli
或PDO
,因为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();