我有一个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需要刷新
答案 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.