mySQL TIMEDIFF查询到JS var-由于冒号而出错

时间:2019-03-02 11:04:33

标签: javascript php mysql var

如何使用TIMEDIFF将MySQL查询的结果传递给同一PHP文件中的Javascript变量?我想将结果用作文本字符串标签。由于传递的数据中出现冒号,因此出现浏览器错误。

MySQL:

$mytimediff = 'TIMEDIFF(NOW(), DBTimeStamp) as myTimeDiff';        
$querylast = "SELECT *, $mytimediff FROM user_log ORDER BY LogID DESC LIMIT 1";
$resultlast = mysql_query($querylast);
$rowtimediff = $rowlast['myTimeDiff'];

JS:

var rowage = <?php echo $rowtimediff ?>;

这会导致浏览器控制台错误:

“未捕获到的SyntaxError:意外令牌:”

显示冒号的控制台错误输出示例: “ var rowage = 00:00:43;”

所有其他MySQL操作和变量都可以通过。

2 个答案:

答案 0 :(得分:1)

如果要在Javascript中使用它,请在打印时对PHP变量进行Json编码。

<?php
    $rowtimediff = ['foo' => 1, 'bar' => 2, 'baz' => 3];
?>
<script>
    var rowage = <?= json_encode($rowtimediff) ?>;
    console.log(rowage);
</script>

结果,您将获得有效的Javascript代码:

<script>
    var rowage = {"foo":1,"bar":2,"baz":3};
    console.log(rowage);
</script>

此外,在处理字符串时,您可以将PHP注入简单地用引号(数字不需要引号)包装,如下所示:

var rowage = "<?= $rowtimediff ?>";

答案 1 :(得分:1)

在您的JS代码中,尝试像这样用双引号包装php代码

var rowage="<?php cho $rowtimediff; ?>";