-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 コードは 2 つの行を db (英語の php) からフェッチしますが、結果として php しか得られませんでした。

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 に答える