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 变量为空。但是,当取消注释第二个日期变量时,它会出现在警报中。它不是一个单独的函数,所以我不明白为什么范围会成为问题。

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...
}

另一个提示:看起来您正在获取标准 MySQL 日期格式,YYYY-MM-DD并使用 PHP 中的字符串操作将其转换为MM-DD-YYYY. 只需在查询中以该格式检索它即可开始并避免PHP 应用程序代码中的explode()and调用。list()

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