3

これは、学生テーブルのフィールド名であるすべてのサブジェクト名を出力するプログラムです。すべてのサブジェクト名を配列に格納し、その配列値を別のページに出力する必要があるため、その配列をセッション変数に格納しました。ただし、次のページでその配列を印刷する場合は、「配列」としてのみ印刷されます。

<?php

session_start();
$con=mysql_connect("localhost","root","");  
mysql_select_db("cse",$con);

$sql="select * from studenttable where username='saravanan'";

$calname=array();
$i=0;
mysql_query($sql);
while($rs=mysql_fetch_field($result))
{
         $colname[$i]=$rs->name;
         $i++;


}
$_SESSION['subject']=$calname;
?>


in the next page i print the session variable using 


<?php
session_start();
echo $_SESSION['subject'];
?>

but i am getting "Array"only as output.
how to print the all value of array what i stored into it already?
4

2 に答える 2

8

もちろんArray、出力としてのみ取得しています..変換するための適切な関数なしで、配列を文字列に変換しようとしています。

配列全体を文字列として出力したい場合は、 を試してくださいprint_r($array);

さらに、もちろん、.. を使用して文字列を使用して配列を結合することもできimplode()ます。最後に、必要に応じて配列の個々の部分にキーを使用してアクセスしてください。

echo $_SESSION['subject']['somekeyhere'];

ただし、コードから、必要なデータを取得するのを妨げるいくつかのタイプミスが実際にあるようにも見えます: while ループに$calnameある$colname変数とは対照的に、セッションでは空の配列として残されます。

更新 1:

配列全体を出力する別の方法..というか、個々の値をエコーアウトします。

foreach ($array as $key => $value) {
    echo $value . "<br />";
}

オフトピック:

mysql_*関数を使用して新しいコードを記述することはお勧めしません。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが見えますか? 代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。どちらかを判断できない場合は、この記事が役に立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。PHP で mysql 関数を使用すべきではない理由も参照してください。

代わりに PDO を使用した上記のコードの例 (タイプミスも修正されています):

try {
    $dbh = new PDO("mysql:host=localhost;dbname=cse", "root", "");
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
    echo "Error!  Could not connect to database: " . $e->getMessage() . "<br/>";
    die();
}

$stmt = $dbh->prepare("select * from studenttable where username=:username");
$stmt->bindValue(":username","saravanan");
$stmt->execute();

$calname = array();
$i = 0;
while ($rs = $stmt->fetch()) {
     $calname[$i]=$rs['name'];
     $i++;
}
$_SESSION['subject']=$calname;
于 2013-02-21T23:57:36.190 に答える
4

<pre>$_SESSION をより明確に表示するには、 with タグを追加してみてください。

    echo '<pre>';
    print_r($_SESSION);
    echo '</pre>';
于 2013-02-22T00:24:59.913 に答える