我有像这样的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>
请帮我找到这个问题。 提前谢谢!
答案 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>");
}
}