0

私はちょうど今テストしている自分のウェブサイトのログインページのようなものをやっています.このコードはログイン後のものです. 問題は、データベースから情報を取得したいのですが、コードが機能しません (何もエコーしません)。MySQL クエリが問題なく動作することを確認しましたが、PHP には結果がありません。

助けと答えをいただければ幸いです。

//---MySQL connection---//
$server = "localhost";
$user = "root";
$pass = "password";
$db = "users";
$table = "users";
mysql_connect($server,$user,$pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
//----------------------//

//---MySQL query, data selection---//
$sesuser = $_SESSION['username'];
$sql = "SELECT data FROM $table WHERE username='$sesuser'";
$predata = mysql_query($sql);
$data = mysql_fetch_field($predata);
//---------------------------------//

//---Check if session is registered---//
session_start();
if(session_is_registered("username")){
    echo "\n"."Hello ".$_SESSION["username"]."<br />";
    echo $data; //!!this line doesn't work
}
else{
    echo "<script>window.location=/login/</script>";
}
//------------------------------------//
?>
4

3 に答える 3

3

変数session_start()を使用する直前または一番上に置く$_SESSION

もう 1 つ:関数session_is_registeredはPHP 5.3.0 で非推奨になりました。この機能に依存することはお勧めできません。

より良い方法

session_start();
//---MySQL query, data selection---//
$sesuser = mysql_real_escape_string($_SESSION['username']);
$sql = "SELECT data FROM $table WHERE username='$sesuser'";
$predata = mysql_query($sql);
$data = mysql_fetch_field($predata);
//---------------------------------//

//---Check if session is registered---//

if(isset($_SESSION['username'])){
    echo "\n"."Hello ".htmlentities($_SESSION["username"])."<br />";
    echo $data; 
}
else{
    header("Location :"login.php");
    exit();
}
于 2011-10-03T11:06:37.383 に答える
2

var_dump($data);- 何と言いますか?

はい、ただしsession_startファイルの先頭にあります。

そして試してみてください( p hp経由):

$i = 0;
while ($i < mysql_num_fields($result)) {
    echo "Information for column $i:<br />\n";
    $meta = mysql_fetch_field($result, $i);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}

に変更mysql_fetch_fieldするとmysql_fetch_row、次の方法でデータにアクセスできます。$data[0];

于 2011-10-03T11:09:21.977 に答える
0

基本的に $data にはオブジェクトが返され、 $data->name のようにエコーできます

于 2011-10-03T11:19:38.823 に答える