将两个MySQL行放入PHP数组

时间:2018-11-04 12:37:01

标签: javascript php mysql json mysqli

我正在为我的学校开发一个窄播系统,目前正在使用JavaScript在主显示页面上的iFrame的URL之间进行轮换。

我希望能够通过PHP后端更改这些值。但是我不知道如何将2行(module_url和module_time)放入数组并将其回显到JS。

浏览stackoverflow时,我尝试了多种代码,这种方法有点用,除了它会抛出URL之类的:“ var arrayObjects = ["https:\/\/domain.eu\/dir\/page.php","https:\/\/domain.eu\/dir\/page.php"]”。

(我希望数组显示:“ var arrayObjects = ["https:\/\/domain.eu\/dir\/page.php", 20]”。其中URL代表新的iFrame源,而20代表页面显示时间。)

所以我的主要问题是,如何使2行适合1个数组,以及如何确保该数组将显示正确的链接以及模块时间。

    <?php
   $mysqli = new mysqli('localhost', 'user', 'pw', 'db');
    if ($stmt = $mysqli->prepare("SELECT module_url FROM db")) {
        $stmt->bind_result($name);
        $OK = $stmt->execute();
    }
    //put all of the resulting names into a PHP array
    $result_array = Array();
    while($stmt->fetch()) {
        $result_array[] = $name;
    }
    //convert the PHP array into JSON format, so it works with javascript
    $json_array = json_encode($result_array);
?>

<script>
    //now put it into the javascript
    var arrayObjects = <?php echo $json_array; ?>
ALL OTHER JS CODE
</script>

编辑:module_time目前未添加到MySQLi查询中。

1 个答案:

答案 0 :(得分:0)

首先,您的PHP数组应该是多维度的,例如:

$result_array[] = array($name, <time here>);

然后,由于您已经使用json_encode并将其分配给JS数组,因此它确实已经是Javascript中的数组,也就是说,您已经可以访问以下元素:

arrayObjects[0][0]; <---- first element URL
arrayObjects[0][1]; <---- first element time

将JavaScript数组打印为HTML将以文本形式显示,例如:

http://www.google.com,20,http://www.google.com,30

通过示例,您可以使用JSON.stringify()打印实际的Javascript数组而不是文本,

var array = JSON.stringify(<?php echo $json_array; ?>);
document.write(array);

将输出:

[["http://www.google.com",20],["http://www.google.com",30]]