mysql_num_rows引发错误

时间:2013-07-09 08:41:59

标签: php mysql

我有一个if语句,检查mysql查询是否返回任何内容,如果没有,则运行另一个mysql语句。我使用if(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']; 

        }
 }

这是错误

  

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

3 个答案:

答案 0 :(得分:3)

您正在为mysql_num_rows()提供一个文字字符串"sql"。您应该引用$sql变量:

 if(mysql_num_rows($sql)>0){

答案 1 :(得分:-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']; 

        }
 }

答案 2 :(得分:-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.