-1

我试图将 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数组中的这两行所以怎么做?

4

2 回答 2

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。

于 2012-10-31T06:59:35.587 回答
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() 可能会给您一个错误“未定义的函数”,因为它尚未加载。

于 2012-10-31T07:02:35.227 回答