-4

我有一个 if 语句,用于检查 mysql 查询是否返回任何内容,如果没有,则运行另一个 mysql 语句。我使用 aif(mysql_num_rows==0)作为检查,但如果 sql 语句不返回任何内容,它会返回错误。

这是代码

 $sql=mysql_query("SELECT * FROM page_styles WHERE page_ref='$page_ref' AND template_ref='$template_ref'");     
 if(mysql_num_rows("sql")>0){
     while($row=mysql_fetch_array($sql))
        {
            $bg_color=$row['bg_color'];

        }
  }
 else
  {
     $sql=mysql_query("SELECT * FROM page_styles WHERE template_ref='$template_ref' and defaultstyle='1'");   
     while($row=mysql_fetch_array($sql))
        {
            $bg_color=$row['bg_color']; 

        }
 }

这是错误

[2013 年 7 月 9 日 03:07:57] PHP 警告:mysql_num_rows():提供的参数不是第 58 行 /home/public_html/index.php 中的有效 MySQL 结果资源 [2013 年 7 月 9 日 03:08: 08] PHP 警告:mysql_num_rows():提供的参数不是第 59 行 /home/public_html/index.php 中的有效 MySQL 结果资源 [09-Jul-2013 03:09:03] PHP 警告:mysql_num_rows():提供参数不是第 59 行 /home/public_html/index.php 中的 id MySQL 结果资源 [09-Jul-2013 03:09:47] PHP 警告:mysql_num_rows():提供的参数不是 / 中的有效 MySQL 结果资源第 59 行的 home/public_html/index.php

第 58 行是 $sql=mysql_query("SELECT * FROM page_styles WHERE page_ref='$page_ref' AND template_ref='$template_ref'");

第 59 行是if(mysql_num_rows("sql")>0){

我知道它可能很简单,但我就是不明白,也许我的 php mysql 需要重新学习

4

3 回答 3

3

您给出mysql_num_rows()的参数是文字 string "sql"。您应该改为引用该$sql变量:

 if(mysql_num_rows($sql)>0){
于 2013-07-09T08:42:50.300 回答
-1
//sql is a variable
<?php 

 $sql=mysql_query("SELECT * FROM page_styles WHERE page_ref='$page_ref' AND template_ref='$template_ref'");

 //sql is a variable
 if(mysql_num_rows($sql)>0){
     while($row=mysql_fetch_array($sql))
        {
            $bg_color=$row['bg_color'];

        }
  }
 else
  {
     $sql=mysql_query("SELECT * FROM page_styles WHERE template_ref='$template_ref' and defaultstyle='1'");   
     while($row=mysql_fetch_array($sql))
        {
            $bg_color=$row['bg_color']; 

        }
 }
于 2013-07-09T08:48:48.860 回答
-1

注意 mysql_num_rows("sql") 你正在传递字符串,但它应该是 $sql

我认为您输入了错误的查询,因此请检查。

在调用 mysql_query() 之前对其进行编码以进行交叉检查

$query = "SELECT * FROM page_styles WHERE page_ref='$page_ref' AND 
          template_ref='$template_ref'";

echo $query;

我相信您将能够在浏览器中看到您实际传递给 mysql_query 函数的内容。

声明应该是这样的

$query = "SELECT * FROM page_styles WHERE page_ref='".$page_ref."' AND 
          template_ref='".$template_ref."'";

$sql = mysql_query($query);

// then rest of your code.
于 2013-07-09T08:52:30.420 回答