1

javascript/jquery を使用して PHP 変数を表示しようとしていますが、「null」と表示されています。

if(mysql_num_rows($checkBan) > 0){
            $bannedDate = $checkBan['banLength'];
            if(preg_match('/[0-9]/',$bannedDate)){      
                list($yyyy,$mm,$dd) = explode('-',$bannedDate);
                 $date = $mm."-".$dd."-".$yyyy;
            }

            //$date = "test"; when this is uncommented it appears in the alert so I know the json_encode is working fine

            ?>
            <script type ="text/javascript">
               var bannedUntil= <?php echo json_encode($date); ?>;
               alert('Your account has been banned until ' + bannedUntil +'. Please contant an administrator if you believe this is an error');
            </script>
            <?

        } 

アラートは正常に表示されますが、bannedUntil 変数は null です。ただし、2 番目の日付変数のコメントを解除すると、アラートに表示されます。それは別の機能ではないので、スコープが問題になる理由がわかりません。

4

1 に答える 1

2

$checkBanで結果リソースとして使用し、mysql_num_rows()フェッチせずにそこから配列キーにアクセスしようとしているのを見ています。への呼び出しが欠落しているようmysql_fetch_assoc()です:

if(mysql_num_rows($checkBan) > 0){
        // Fetch a row from the result resource $checkBan
        $row = mysql_fetch_assoc($checkBan);
        $bannedDate = $row['banLength'];
        // etc...
}

もう 1 つのヒント: 標準の MySQL 日付形式を に戻しYYYY-MM-DD、PHP の文字列操作で に変換しているようMM-DD-YYYYです。まず、クエリでその形式で取得するだけで、PHP アプリケーション コードでの呼び出しexplode()と呼び出しを回避できます。list()

SELECT DATE_FORMAT(banLength, '%m-%d-%Y') FROM yourtable
于 2012-08-21T01:42:11.090 に答える