未定义参考错误数组

时间:2013-03-14 09:27:04

标签: php javascript html mysql html5

我尝试使用以下代码从数据库中检索值,并使用php数组将它们存储在javascript数组中。我尝试使用下面的代码,但它返回给我一个未定义的引用错误数组。代码如下。

<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("cerebra", $con);
$sql="select name from details order by download desc limit 20";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
$query=mysql_query($sql,$con);
$names=array();
$index=0;
while($row=mysql_fetch_array($query)){
    $names[$index]=$row[0];
    $index++;
}
?>
<script>
var comp=new array();
<?php
 $i=0;
 foreach($names as $a){
        $i++;
        echo "comp[$i]='".$a."';\n";

        }
?>
for(i=0;i<comp.length;i++)
            alert(comp[i]);

</script>

4 个答案:

答案 0 :(得分:1)

var comp = new Array()不是array()。无论如何都要跳过它并立即使用var comp = []

答案 1 :(得分:1)

我认为你这是错误的做法。这是一个更好的方法:

<?php
  $phpArray = array("foo", "bar", "baz");
  //....
?>

<script type="text/javascript">
var jsArray = <? echo json_encode($phpArray); ?>;
</script>

从这里采取:How to use an array value from php to javascript?

答案 2 :(得分:1)

首先,为什么要运行两次查询?

...

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
$query=mysql_query($sql,$con);

...

Javascript中的第二个数组对象称为Array,而不是array。 所以试试

var comp = new Array();

<强>更新

  

但是我得到的第一个值是未定义的。怎么会? - user2129868

因为在获取值之前递增$i。因此,在您的Javascript第一次迭代中,$i1而非0

所以改变

<script>
var comp=new array();
<?php
 $i=0;
 foreach($names as $a){
        $i++;
        echo "comp[$i]='".$a."';\n";

        }
?>
for(i=0;i<comp.length;i++)
            alert(comp[i]);

</script>

<script>
var comp=new array();
<?php
 $i=0;
 foreach($names as $a){
        echo "comp[".$i++."]='".$a."';\n";
        }
?>
for(i=0;i<comp.length;i++)
            alert(comp[i]);

</script>

否则,当您尝试使用

获取元素时
for(i=0;i<comp.length;i++)
            alert(comp[i]);

0将是未定义的,因为1是您添加的第一个索引。

答案 3 :(得分:1)

new array();

应该是

new Array();

在你的javascript中。

编辑:你也应该停止使用mysql_ *函数。