【问题标题】:get MySql Data to PHP array and convert to Javascript array获取 MySql 数据到 PHP 数组并转换为 Javascript 数组
【发布时间】:2014-12-06 07:50:36
【问题描述】:

我有这样的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>

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

【问题讨论】:

  • 尝试在文档加载事件中编写您的 javascript 代码,如下所示。 document.onreadystatechange = function () { if (document.readyState == "complete") { .. here.. } }
  • 你可能打算写$valueMap[$row['clm_num']] = $row['clm_amnt']];而不是$valueMap[$row['clm_num'] &amp; $row['clm_amnt']];

标签: javascript php mysql arrays


【解决方案1】:

您应该启用 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或PDOhttp://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>

【讨论】:

  • 我将代码行更改为 $valueMap[$row['clm_num']] = $row['clm_amnt']; 但什么也没发生 :( 它什么也没检索到。
  • 让我们一步一步来,直接在while循环之后,在下一行: echo "
    ".print_r($valueMap, true)."
    ";并执行以查看生成的 php 数组。
  • 是的,没关系。它在 php 中完美运行。但问题是我需要在 javascript 中获取像 $temp = array([1,25000],[2,31700],[5,52900],[8,45000]); 这样的数据数组
  • 刚刚更新了答案,但如果您可以显示所需的 html 输出将会有所帮助。
【解决方案2】:

首先你必须检查你的 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>

这是一个数组或一维数组,如array['amount']。 我将此代码用于​​p>

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

检查一下。

【讨论】:

    【解决方案3】:

    将此$valueMap[$row['clm_num'] &amp; $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
    

    【讨论】:

      【解决方案4】:

      试试这个:

      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>");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-01-11
        • 2020-11-05
        • 1970-01-01
        • 2018-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多