将MySql Data获取到PHP数组并转换为Javascript数组

时间:2014-12-06 07:50:37

标签: javascript php mysql arrays

我有像这样的mysql表

table = tbl_tst`

clm_num clm_amnt

1 - 25000
2 - 31700
5 - 52900
8 - 45000

我希望将这些表数据添加到php数组中,就像这样

$temp = array([1,25000],[2,31700],[5,52900],[8,45000]);

我将使用此代码将php数组转换为javascript

var jsArray = <? echo json_encode($temp); ?>;

问题是,当我运行我的代码时,它什么都没检索。有时它会检索“对象”:(

这是我的完整php代码

<?php
$con=mysql_connect("localhost","user","pass") or die("Failed to connect with database!!!!");
mysql_select_db("db", $con); 
$query = "SELECT * FROM tblnum"; 
$result = mysql_query($query) or die(mysql_error());
$valueMap = array();
while($row = mysql_fetch_array($result)){
    $valueMap[$row['clm_num'] & $row['clm_amnt']];
}
?>

<script>
var jsArray = <? echo json_encode($valueMap); ?>;
for(var i=0; i < jsArray .length; i++){
document.write("<li>"+jsArray [i]+"</li>");
}
</script>

请帮我找到这个问题。 提前谢谢!

4 个答案:

答案 0 :(得分:2)

您应该启用PHP显示错误,这会告诉您构建阵列时出错。

<?php
 ## Turn on error reporting
 error_reporting(-1);
 ini_set('display_errors', 'On');
 ....
 $valueMap = array();
 while($row = mysql_fetch_assoc($result)){
    $valueMap[$row['clm_num']] = $row['clm_amnt'];
 }
?>

编辑:

我请求了一种不同类型的数组:

while($row = mysql_fetch_assoc($result)){
     $valueMap[] = array($row['clm_num'], $row['clm_amnt']);
}

不再维护MySQL,请开始使用MySQLI或PDO http://rudiv.se/Development/Resource/when-to-use-mysql-vs-mysqli-vs-pdo-in-php

编辑:

<?php

$temp = array(
    array(1,2500),  
    array(2,31700)
);

?>

<ul id="list"></ul>

<script>

    var json_array = <?php echo json_encode($temp, true);?>;    

    console.log(json_array);    

    var ul = document.getElementById("list");
    for(i in json_array){       
        var li = document.createElement("li");
        li.appendChild(document.createTextNode(json_array[i][0]+','+json_array[i][1])); 
        ul.appendChild(li);
    }

</script>

答案 1 :(得分:1)

首先你必须检查你的php数组是否来了。如果它将来使用此代码:

<script type='text/javascript'>
  var js_data = <?php echo json_encode($valueMap); ?>;
  var jsArray = js_data.toString().split(',');
  for(var i=0; i < jsArray.length; i++){
    alert(jsArray[i]);
  }
</script>

这一个用于一个数组或一维数组,如数组['amount']。 我用这个代码

$valueMap = array('25000','31700','52900','45000'); // php array

检查一下。

答案 2 :(得分:0)

将此$valueMap[$row['clm_num'] & $row['clm_amnt']];更改为$valueMap[] =array($row['clm_num'], $row['clm_amnt']);

    $valueMap = array();
    while($row = mysql_fetch_assoc($result)){
        $valueMap[] =array($row['clm_num'], $row['clm_amnt']);
    }
    ?>

<script>
var jsArray = <?php echo json_encode($temp); ?>;//change <? to <?php  it's give error when sort tag is not enable 
for(var i=0; i < jsArray .length; i++){
document.write("<li>"+jsArray [i]+"</li>");
}
</script>

//输出

1,25000
2,31700
5,52900
8,45000

答案 3 :(得分:0)

试试这个:

while($row = mysql_fetch_array($result)){
    $valueMap[$row['clm_num']] = $row['clm_amnt'];
}

然后在js:

for(var i in jsArray){
    if (jsArray.hasOwnProperty(i)) {
        document.write("<li>"+jsArray[i]+"</li>");
    }
}