【问题标题】:how to fill JavaScript array with database data using php [duplicate]如何使用php用数据库数据填充JavaScript数组[重复]
【发布时间】:2025-12-22 08:00:11
【问题描述】:

这是连接数据库的php代码

<?php    
$host = "localhost";
$user = "admin";
$password = "";
$dbname = "test";

$con = new mysqli($host, $user, $password, $dbname) or die ('Could not connect to the database server' . mysqli_connect_error());
?>

这是我想将数据库数据插入 JavaScript 数组的地方

<script type="text/javascript">
var array = [<?php
$sql = mysqli_query($conn, "SELECT name FROM users");
while ($row = $sql->fetch_assoc()) {
    unset($name);
    $name = $row['name'];
    echo '<p>'.$name.'</p>';
}
?>];
document.write(array);
</script>

【问题讨论】:

    标签: javascript php arrays


    【解决方案1】:

    先将数据保存到另一个数组中,使用JSON类型传给JS

    试试这个代码,

    <?php
    while ($row = $sql->fetch_assoc()) {
        $array2js[] = $row['name'];
    }
    ?>
    
    <script type="text/javascript">
        var array = JSON.parse("<?=json_encode($array2js)?>");
        console.log(array);
    </script>
    

    美好的一天~

    【讨论】:

    • 不需要解析JSON.parse它已经是json了
    • @Lawrence Cherone 这个函数解码 JSON。
    • 是的,就像 var a = JSON.parse("[]") 一样,你可以在没有它的情况下执行 var a = [],因为 json_encode 返回 json :/
    【解决方案2】:

    你应该使用json_encode():

    json_encode — 返回值的 JSON 表示

    <?php
    $sql = mysqli_query($conn, "SELECT name FROM users");
    
    $json = array();
    while ($row = $sql->fetch_assoc()) {
        $json[] = $row['name'];
    }
    ?>
    

    然后在你的javascript中

    <script type="text/javascript">
        var array = <?= json_encode($json) ?>;
    </script>
    

    【讨论】:

      【解决方案3】:

      通常使用 Ajax 和 JSON 响应来使用数据库数据填充 javascript 变量。 但请尝试关注

      <script type="text/javascript">
            var array = [
            <?php
            $result = array();
            $sql = mysqli_query($conn, "SELECT name FROM users");
            while ($row = $sql->fetch_assoc()) {
                  unset($name);
                  $name = $row['name'];
                  $result[] = "'$name'";
            }
            echo impode(",", $result);
            ?>
            ];
            for(var i =0; i < array.length; i++)
            {
              document.write("<p>" + array[i] + "</p>");
            }
      
      </script>
      

      【讨论】:

        【解决方案4】:

        您在 JS 代码中的 array 显示为 [0] =&gt; '&lt;p&gt;name&lt;/p&gt;'。您没有正确构建数组,因此您需要删除 p 元素,并使其以空格分隔。


        编辑

        正如建议的那样,[json_encode][1] 会是一个更好的解决方案,看看这个例子:

        <?php
        // get results from db
        $name = $row['name'];
        $age = $row['age'];
        $phone = $row['phone'];
        // create array
        $array = array($name, $age, $phone);
        // encode array
        $json = json_encode($array);
        ?>
        
        <script>
            var array = <?php echo $json; ?>;
            document.write(array);
        </script>
        

        这将输出:

        name,age,phone
        

        【讨论】:

        • @LawrenceCherone ^^ 我在答案中添加了一个新部分