如何将PHP从MySQL获取的日期数据以字符串类型传递给JavaScript
问题原因
你当前的代码直接输出日期字符串到JS数组时没有包裹引号,JS会把2021-09-16识别为数值表达式执行减法运算,最终得到计算后的数值1995,而非你需要的日期字符串。
解决方案
方案1:使用json_encode自动格式化(推荐)
PHP内置的json_encode可以自动将PHP数组转换为符合JS语法的数组结构,自动处理字符串引号、逗号分隔等逻辑,无需手动拼接,完全避免语法错误。
代码修改如下:
<script> <?php $connection = mysqli_connect("localhost","root","","test"); $dates = mysqli_query($connection,'SELECT * FROM `booking_dates`'); // 先把查询到的日期存到PHP数组 $bookedDates = []; foreach($dates as $date){ $bookedDates[] = $date['day']; } // 直接输出JSON格式的数组给JS变量 echo "const bookedArray = " . json_encode($bookedDates) . ";"; ?> </script>
方案2:手动给日期字符串加引号
如果你要保留原有的拼接逻辑,只需要在输出的日期值外层包裹单引号即可:
foreach($dates as $date){ echo "'$date[day]' ,"; }
注意:这种方案如果日期值本身包含单引号会导致JS语法错误,仅适合确定日期格式固定无特殊字符的场景,优先推荐方案1。
内容的提问来源于stack exchange,提问作者Endre Kovács
相关产品推荐
相关产品推荐

