【发布时间】:2015-01-24 00:07:55
【问题描述】:
大家好,我无法理解这一点。我正在尝试使用 PDO 从表中获取一些数据。这是我的代码:
//in db.php I have the connection:
$host = 'localhost';
$db = 'APL';
$dbuser = '';
$pass = ' ';
try{
$conn = new PDO("mysql:host=$host;dbname=$db", $dbuser, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
//in my file I have this:
$id = $_GET['id'];
$sel_sql = "SELECT * FROM users WHERE id =:id";
$stmt = $conn ->prepare($sel_sql);
$stmt -> bindParam(':id', $id);
$stmt -> execute();
$result = $stmt -> fetchAll(PDO::FETCH_ASSOC);
问题在于只要设置了 $_SESSION['user'],print_r($result) 就会返回 '1'(只是值 1,因此我无法访问存储在表中的任何数据)。 如果 $_SESSION['user'] 未设置,整个数据检索工作正常。
有人能解释一下为什么会这样吗? (我对这一切还很陌生,我真的很想了解为什么会出现一些问题)。
谢谢!
【问题讨论】:
-
您没有在代码 sn-p 的任何地方使用
$_SESSION['user'],因此您的错误可能在其他地方。 -
fetchAll()从不返回数字,因此您必须在其他地方覆盖您的变量。 -
我知道 fetchAll() 应该返回一个数组(在其他页面上,完全相同的代码返回预期的内容)这就是为什么我不知道为什么它放置 print_r($result)在我发布的代码部分的正下方返回 1。
-
关于 $_SESSION['user']。验证密码后,我刚刚为其分配了 $_POST['user'] ($_SESSION['user']= $_POST['user'];) 我使用 session_start();在每个页面的开头,当我需要验证其内容时(如果用户是管理员)。