Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php与mySQL数据库的连接问题_Php_Mysql_Session_Pdo - Fatal编程技术网

php与mySQL数据库的连接问题

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

嗨,各位,我不能把我的头绕在这上面。我正在尝试使用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);
问题是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());在每个页面的开头,当我需要验证其内容时(如果用户是管理员)。