Php 未定义引用错误数组
我尝试使用以下代码从数据库中检索值,并使用php数组将它们存储在javascript数组中。我尝试使用以下代码,但它返回给我一个未定义的引用错误数组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
$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();