将mysql_fetch_row结果转换为javascript数组

时间:2012-10-31 06:54:36

标签: php javascript

我试图将php mysql_fetch_row结果转换为javascript数组,所以我写下面的代码来做到这一点。但是我遇到了问题,如果结果中有多行,那么只有最后一行存储在javascript数组中

<script>
function sub()
{
alert("coming");
var a= new Array;
<?php
$dbhost ='localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'pupilcafe';
$conn = mysql_connect($dbhost,$dbuser,$dbpass) or die ('Error Connecting to mysql');
mysql_select_db($dbname,$conn);
$uid=1;
$semester='1stSemester';    
$cid=1;
$qry="select * from subject where cid='$cid'&& uid='$uid'&& semester='$semester'";
$res = mysql_query($qry);
while($data=mysql_fetch_row($res))
{
$i=0;
echo "a[$i]='".$data[1]."';";
$i++;
}
?>
alert(a[0]);
}
</script>

所以这里的mysql代码获取两行frm db(Englishphp)但结果我只得到了php ..我想要javascript数组中的这一行 那怎么办呢?

2 个答案:

答案 0 :(得分:2)

不要自己编写Javascript语法。使用json_encode

$a = array();
while ($data = mysql_fetch_row($res)) {
    $a[] = $data[1];
}

?>

<script>
    var a = <?php echo json_encode($a); ?>;
</script>

此外,不推荐使用mysql_函数。不要将它们用于新代码。使用mysqli或PDO。

答案 1 :(得分:0)

首先,您应该遵循一些编码指南。你的编码方式并不整洁。 停止使用mysql_query。它正在折旧并开始使用PDO。在谷歌搜索关于那个。 其次,您应该在查询中转义您正在使用的变量以避免sql注入。使用您编写的代码无法实现您想要的功能。     

function sub() {

    //your queries and other stuff here

    while($data=mysql_fetch_row($res))
    {

        $tempArray[] = $data;

    }

    return json_encode($tempArray);
}
?>

<script language = "javascript">

    window.addEventListener("onload", function () {
        var temArray = "<?php echo sub(); ?>";

        alert(tempArray);

    }, false);

</script>

onload eventListener将告知页面是否已加载。没有它,你的函数调用sub()可能会给你一个错误“未定义的函数”,因为它尚未加载。