-4

これが私がこれまでに持っているものです:

$checkbonus = mysql_query("Select theurl from `vaultpromo` where (accid=0 or accid=$acctype) and (shownum=$clickstoday or (showtype=1 and ($clickstoday%shownum=0))) AND 
(startdate<$today AND enddate>$daytime) OR (startdate=$today AND starttime<=$currenttime AND enddate>$daytime) limit 1");

if (mysql_num_rows($checkbonus) > 0) {
    DO SOMETHING
}

しかし、私はこのエラーが発生しています:

Warning: mysql_num_rows() expects parameter 1 to be resource,
boolean given in...

どんな助けでも大歓迎です!

この部分まですべてが機能します。

(startdate<$today AND enddate>$daytime) OR (startdate=$today AND starttime<=$currenttime AND enddate>$daytime) limit 1");

私はチェックし、テーブル内の正しい行をチェックしています。これを使用して、クエリの直前に $today、$daytime、および $currenttime を定義しました。

$today=date("Y-m-d");

$currenttime=date("H:i:s");

$daytime=date("Y-m-d H:i:s");
4

2 に答える 2

2

理由は、クエリが無効であるためです。したがってFalse、結果セットではなくブール値を返します。

mysql_num_rows()ブール値ではなく結果セットを想定しているため、警告が発行されます。

すべての PHP 変数が値付けされているか、またはそれらのいずれかが空であるかどうかを確認します。

編集:たとえば、$acctypeが空の場合、クエリは次のようになります

Select theurl from `vaultpromo` where (accid=0 or accid=) and (...
                                                    ^^^^^^

すべての変数に値があることを確認し、奇妙な状況を避けるために確認してください...

于 2012-06-16T14:44:56.043 に答える
0

次のようにする必要があります。

$checkbonus = mysql_query("Select theurl from `vaultpromo` where (accid=0 or 
accid=$acctype) and (shownum=$clickstoday or (showtype=1 and                 
($clickstoday%shownum=0))) AND 
(startdate<$today AND enddate>$daytime) OR (startdate=$today AND 
starttime<=$currenttime AND enddate>$daytime) limit 1");


//Check resultset variable if it contain data or not.
if($checkBonus)
{
    if (mysql_num_rows($checkbonus) > 0) {
       //DO SOMETHING
    }
}
else
{
    die('Invalid query: ' . mysql_error());
}

このエラー「警告: mysql_num_rows() は、パラメーター 1 がリソースであり、ブール値が指定されていることを期待しています...」というエラーが発生$checkbonus しています。これは、クエリが正常に実行されたため、変数にデータベース リソースが含まれておらず、False が返されているためです。

クエリにエラーが含まれている可能性が最も高いのは、1 つ以上の変数が空であるかエスケープされていないため、クエリでエラーが発生したためです。

ところで、 PDOライブラリの使用を検討することを強くお勧めします。

于 2012-06-16T14:53:37.337 に答える