【问题标题】:Issues with php connection to mySQL databasephp连接到mySQL数据库的问题
【发布时间】: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();在每个页面的开头,当我需要验证其内容时(如果用户是管理员)。

标签: php mysql session pdo


【解决方案1】:

fetchAll 函数应该返回一个数组或布尔值 FALSE。

您报告print_r($result) 显示的整数值为 1。

我不明白这是怎么可能的,除非您为 $result 分配不同的值。尝试重新定位 print_r($result) 以立即执行来自 fetchAll 的分配。

(我怀疑$result 在您执行print_r 之前,在您的代码中的其他位置被赋值为1。如果存在“与MySQL 数据库的php 连接问题”,我们希望查看某种 PDO 错误。)


注意:我不认为PDO::FETCH_ASSOCfetchAll 函数的定义获取样式。 (fetchAllfetch 的获取方式不同。)

【讨论】:

    【解决方案2】:

    以防其他人偶然发现这一点,在 $result 变量和 print_r($result) 之间我有一个 include_once();声明(首先被错误地放在那里)。

    谢谢大家的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 2019-09-13
      • 2023-03-08
      • 2011-09-20
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      相关资源
      最近更新 更多