将PHP的MYSQL结果插入Javascript数组

Ada*_*rst 7 javascript php mysql arrays

我正在尝试使用javascript中的trie在私人网站上创建一个非常简单的自动完成功能.问题是我看到的例子和尝试只是在javascript数组中使用预定义列表.

例如. var arrayObjects = ["Dog","Cat","House","Mouse"];

我想要做的是使用PHP检索MYSQL结果并将它们放入javascript数组中.

这是我到目前为止的PHP(Javascript很好只需要填充数组):

<?php 
    $mysqli = new mysqli('SERVER', 'U/NAME', 'P/WORD', 'DB');
    if (!$mysqli)
    {
        die('Could not connect: ' . mysqli_error($mysqli));
    }
    if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) {
        $stmt->bind_result($name);
        $OK = $stmt->execute();
    }   
while($stmt->fetch()) 
    {
     printf("%s, ", $name); 
    }
?>
Run Code Online (Sandbox Code Playgroud)

然后我想使用像mysql_fetch_array($ name)这样的东西插入基本上每个值; (我知道这是不正确的,但只是为了告诉你们我们脑子里的事情发生了什么)

<script> -- this is the javascript part
(function() {
    <?php while $stmt=mysql_fetch_array($name))
     {
       ?>
        var arrayObjects = [<?php stmt($name) ?>];
    <?php } 
       ?>
Run Code Online (Sandbox Code Playgroud)

我可以检索结果回显精细,我可以操纵trie罚款没有MYSQL结果,我只是不能把它们放在一起,任何帮助将不胜感激,如果我走错了方向,请告诉我.

谢谢,

亚当

Max*_*Max 10

首先,java和之间存在非常大的差异javascript:-)现在,在这种情况下,您正在做的是循环遍历结果数组,并且每次打印出行时var arrayObjects = [<?php stmt($name) ?>];.但是,这不会在您获得的PHP数组和javascript数组之间进行转换.

既然你开始这样做,你可以这样做:

<?php
    //bind to $name
    if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) {
        $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; ?>
</script>
Run Code Online (Sandbox Code Playgroud)


ant*_*ore 5

用于json_encode将 PHP 数组转换为有效的 javascript 对象。例如,如果您从数据库中获取了名为 php 数组的结果$array

var obj = "<?php echo json_encode($array); ?>";
Run Code Online (Sandbox Code Playgroud)

obj您现在可以在 javascript 代码中使用