-4

mysql クエリが何かを返すかどうかをチェックする if ステートメントがあり、そうでない場合は別の mysql ステートメントを実行します。チェックとしてa を使用して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(): 提供された引数は、58 行目の /home/public_html/index.php の有効な MySQL 結果リソースではありません [09-Jul-2013 03:08: 08] PHP 警告: mysql_num_rows(): 提供された引数は、59 行目の /home/public_html/index.php の有効な MySQL 結果リソースではありません [09-Jul-2013 03:09:03] PHP 警告: mysql_num_rows(): 提供されました/home/public_html/index.php の 59 行目 [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()リテラル文字列である引数を指定しています"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 に答える