PHP / MySQL - 从数据库中获取一行

时间:2010-08-27 23:00:25

标签: php mysql

有人可以帮我处理我的剧本吗?它应该读取用户的会话member_id,找到相应的行并将其回显。但是当它运行时,它什么都不输出。

<?php

//Start session
session_start();

//Make sure user is logged in
require_once('auth.php');

//Include database connection details
require_once('config.php');

//Connect to DB
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}

//Select database
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
die("Unable to select database");
}

//Create Querys
$query = "SELECT * FROM stats WHERE member_id='" . $_SESSION['SESS_MEMBER_ID'] . "' "; 
$result = mysql_query($query);

//Gather the whole row into an array
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
    echo $row;     
} 

?>

2 个答案:

答案 0 :(得分:3)

在mysql_query行之后立即删除echo mysql_num_rows($result);,看看你是否从查询返回了任何结果 - 我怀疑你会发现你没有,在这种情况下,SESS_MEMBER_ID不存在于统计表。

答案 1 :(得分:1)

  1. 使用PDO代替mysql_*()个功能
  2. $row是一个数组,所以回应它是没有意义的:PHP arraysvar_dump()
  3. 确保SQL查询返回任何内容。也许$_SESSION['SESS_MEMBER_ID']有一些意想不到的价值?
  4. 出现问题时进行基本调试 - 转储所有内容:

    var_dump($query); 
    var_dump($result);
    var_dump($_SESSION);
    

    甚至更好:使用真正的调试器。

  5. 确保显示每个可能的错误 - PHP是一种非常奇怪的语言,它接受错误的音调并且仍然可以工作:

    error_reporting(-1);
    ini_set('display_errors', 'on');
    
  6. btw:会话变量的SESS_前缀有什么意义?