Php 未定义引用错误数组

Php 未定义引用错误数组,php,javascript,mysql,html,Php,Javascript,Mysql,Html,我尝试使用以下代码从数据库中检索值,并使用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

我尝试使用以下代码从数据库中检索值,并使用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>

var comp=新数组();

它是
var comp=new Array()
而不是
Array()
。无论如何,跳过这一点,立即使用
var comp=[]

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

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

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

var jsArray=;

摘自此处:

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

...

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

...
第二,在Javascript中,数组对象称为
array
,而不是
array
。 所以试试看

var comp = new Array();
更新:


但是我得到的第一个值是未定义的。为什么会这样用户2129868

因为您在获取值之前增加了
$i
。因此,在Javascript的第一次迭代中,
$i
1
,而不是
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>

var comp=新数组();
应该是

new Array();
在javascript中


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

一个可能不相关的注意事项:在
中不需要
$index
,而
循环时,您也可以使用
$names[]=$row[0]
。您浏览器的开发工具将能够为您指出未定义的内容;然后,您将必须确定原因并修复该问题。但我得到的第一个值未定义。为什么?在我更新的答案中,看看为什么Javascript中出现未定义的问题。是的,愚蠢的我…对不起..我在那里放置了增量来调试代码。结果给了我一个错误。
for(i=0;i<comp.length;i++)
            alert(comp[i]);
new array();
new Array();