如何使用PHP使用数据库中的值填充javascript数组?

时间:2009-09-13 05:10:37

标签: php javascript

我必须创建一个javascript数组,其元素由php从数据库中获取。可能吗?如果是这样,怎么样?

(我不想用ajax来做)

5 个答案:

答案 0 :(得分:5)

收集数组中的值并使用json_encode将其转换为JSON:

$array = array();
while ($row = mysql_fetch_assoc($result)) {
    $array[] = $row['key'];
}
echo 'var array = '.json_encode($array).';';

答案 1 :(得分:4)

答案1:是的,可以做到。

答案2:方法如下:

$js_array = "[";
$result = mysql_query("some query of yours");
while( $row=mysql_fetch_array($result, MYSQL_NUM) ) {
    $js_array .= $row[0]; // assuming you just want the first field 
                          // of each row in the array
    $js_array .= ",";
}
$js_array{ strlen($js_array)-1 } = ']';

echo "var db_array = $js_array ;";

干杯!

答案 2 :(得分:1)

如果可以遍历数据库内容,则创建数组非常简单:

echo "var myArray = [";

在此处循环遍历数组并添加逗号以分隔值。

echo "];";

您的myArray变量将在客户端可用。它应该看起来像:

var myArray = [1, 3, 2, 4];

或者,为避免因基于循环的字符串连接而产生额外的逗号,可以按如下方式将变量写入客户端:

echo "var myArray = [];"

...并为每个数据行执行以下操作:

echo "myArray.push($db_data);"

虽然不像以前的方法那么干净,但这是有效的。您将得到类似于以下内容的代码:

var myArray = [];

myArray.push(3);
myArray.push(5);
myArray.push(1);

alert(myArray); // will display "3, 5, 1"

我对不熟悉PHP感到抱歉,但这可以用任何服务器端语言完成。

答案 3 :(得分:1)

<script language="javascript1.2">
var arr = new array(<?php 
$result = mysql_query("select .... ");
$count = mysql_num_rows($result);
if($count>0){
  for( $i=0;$i<$count-1;$i++) {
    $row = mysql_fetch_row($result);
    echo $row[0],',';
  }
  $row = mysql_fetch_row($result);
  echo $row[0],',';
}
?>);
</script>

答案 4 :(得分:0)

这是一个正确处理数据中单引号的解决方案:

首先检索数据库数据,例如使用 mysqli _ 函数:

$result = mysqli_query($con, $sql);
if (!$result) die(); // error handling comes here
$array = mysqli_fetch_all($result, MYSQLI_ASSOC);

然后将其转换为JSON,转义单引号并输出JavaScript:

$output = str_replace("'", "\'", json_encode($array));
echo "var array = '$output';";

请注意json_encode通过加倍反转来逃避反斜杠(应该如此)。并且转义单引号是正常的,因为它无法知道我们将它放入的上下文。因此,当我们在JavaScript中注入它,将其包装在单引号中时,我们也负责转义报价。