//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);
问题是print_r($ result)返回' 1' (只有值1,因此我无法访问存储在表格中的任何数据),只要设置$ _SESSION [' user']即可。 如果未设置$ _SESSION ['用户'],整个数据检索工作正常。
有人可以解释为什么会这样吗? (我对这一切都很陌生,我真的想了解为什么会出现一些问题)。
谢谢!
答案 0 :(得分:0)
fetchAll
函数应返回数组或布尔值FALSE。
您报告print_r($result)
显示整数值1。
除非您为$result
分配不同的值,否则我看不出这是怎么回事。请尝试重新定位print_r($result)
,以便立即执行fetchAll
的分配。
(我怀疑$result
在您执行print_r
之前在代码中的其他地方被赋值为1。如果有“与MySQL数据库的PHP连接问题”,我们' d期待看到某种PDO错误。)
注意:我认为PDO::FETCH_ASSOC
不是fetchAll
函数的已定义提取样式。 (fetchAll
的抓取方式与fetch
不同。)
答案 1 :(得分:0)
以防其他人偶然发现这个问题,在$ result变量和print_r($ result)之间我有一个include_once();声明(首先错误地放在那里)。
谢谢大家的回答。