我从MySQL中的数据创建了一个值数组。然后我尝试在Javascript中打印它,但不幸的是它没有出现。
数据库有两个列:txt.style.left = x+'px';
和gurtej
singh
当我尝试使用<?php
require_once('config.php');
function readAttribute($connect){
$resultArray=array();
$sql="SELECT Attributename,Entityname FROM temp_data_attribute";
$res=mysqli_query($connect,$sql);
echo mysqli_num_rows($res);
if(mysqli_num_rows($res)==0){
return 0;
}
else{
while($result=mysqli_fetch_array($res)){
array_push($resultArray,$result[0]);
}
return $resultArray;
}
}
?>
<html>
<body>
<script>
var jArray= <?php
$resultArray=readAttribute($connect);
if($resultArray==0){
$resultArray=[];
}
echo json_encode($resultArray);?>;
var counter=<?php echo count($resultArray);?>;
document.write(jArray[0]);
</script>
<?php
print_r($resultArray);
?>
</body>
</html>
在php中打印时,这就是结果。
数组([0] =&gt; gurtej [1] =&gt; singh)
答案 0 :(得分:1)
生成的JavaScript语句不仅包含var
和array
作为JSON:
var jArray = 2["gurtej","singh"];
额外2
来自显示行数的echo
中的readAttribute()
:
function readAttribute($connect){
$resultArray=array();
$sql="SELECT Attributename,Entityname FROM temp_data_attribute";
$res=mysqli_query($connect,$sql);
echo mysqli_num_rows($res);
// ^^^^
通过跟随数字,&#34;数组&#34;更改含义并被解释为bracket property accessor comma operator。该陈述的行为与:
相同var jArray = (2).singh;
而且,2
号码(通常)没有名为singh
的属性。所以,你得到undefined
,它不具备属性。
console.log(typeof jArray); // 'undefined'
console.log(jArray[0]); // TypeError
要删除2
,您需要删除或注释掉其他echo
:
function readAttribute($connect){
$resultArray=array();
$sql="SELECT Attributename,Entityname FROM temp_data_attribute";
$res=mysqli_query($connect,$sql);
// echo mysqli_num_rows($res);
// ...
}
var jArray = ["gurtej","singh"];
console.log(typeof jArray); // "object"
console.log(jArray[0]); // "gurtej"
答案 1 :(得分:0)
让我们稍微清理一下这个功能,我们也会解决这个问题
function readAttribute($connect){
$resultArray = array();
$sql="SELECT Attributename,Entityname FROM temp_data_attribute";
$res=mysqli_query($connect,$sql);
//echo mysqli_num_rows($res);
while($result = mysqli_fetch_assoc($res)){
$resultArray[] = $result;
}
return $resultArray;
}
您的问题是您使用的是$result[0]
,但这只是推送第一列。如果您要json_encode
这个,我会避免使用fetch_array()
(没有参数),因为它会为每列返回一个数字AND关联键值(这会使数据集膨胀行)
答案 2 :(得分:0)
让我们清理代码:
<html>
<body>
<!-- container to hold data -->
<div id='container'></div>
<script>
<?php
//--- get the results from the database
$resultArray=readAttribute($connect);
//--- convert if necessary
if($resultArray==0){
$resultArray=[];
}
?>;
//--- place results into JavaScript array
var jArray= <?php echo json_encode($resultArray);?>;
//--- show the raw array
document.getElementById('container').innerHTML = jArray[0];
</script>
<?php
print_r($resultArray);
?>
</body>
</html>