php与mySQL数据库的连接问题
嗨,各位,我不能把我的头绕在这上面。我正在尝试使用PDO从表中获取一些数据。这是我的代码:php与mySQL数据库的连接问题,php,mysql,session,pdo,Php,Mysql,Session,Pdo,嗨,各位,我不能把我的头绕在这上面。我正在尝试使用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_ERRM
//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,因此我无法访问表中存储的任何数据),只要设置了$\u SESSION['user']。
如果未设置$\u会话['user'],则整个数据检索工作正常
有人能解释一下为什么会这样吗?(我对这一切都是新手,我真的在努力理解为什么会出现一些问题)
谢谢大家! 函数fetchAll应该返回数组或布尔值FALSE 您报告
print\r($result)
显示的整数值为1
我不明白这是怎么可能的,除非您为$result
指定了不同的值。尝试重新定位print\r($result)
以立即跟随fetchAll
中的分配
(我的怀疑是,$result
在执行打印之前,在代码的其他地方被赋值为1。如果“与MySQL数据库的php连接出现问题”,我们可能会看到某种PDO错误。)
注意:我不认为PDO::FETCH_ASSOC
是为fetchAll
函数定义的获取样式。(fetchAll
具有与fetch
不同的获取样式)以防万一,在$result变量和print_r($result)之间,我有一个include_once();声明(最初错误地放在那里)
谢谢大家的回答。您没有在代码段的任何地方使用$\u会话['user']
,因此您的错误可能在其他地方。fetchAll()
从不返回数字,因此您必须在其他地方覆盖变量。我知道fetchAll()应该返回数组(在其他页面上,完全相同的代码会返回预期的结果)这就是为什么我不知道为什么它会打印($result),它位于我发布的代码部分的正下方,返回1。关于$_会话['user']。在密码验证后,我刚刚为它分配了$_POST['user']($_会话['user']=$_POST['user'];我使用会话_start());在每个页面的开头,当我需要验证其内容时(如果用户是管理员)。