php - 为什么我的 SQL 查询返回一个数组?

标签 php mysql sql

我有一张用户表,每个用户都有一个唯一的 ID。当我尝试为 session 获取他们的 ID 时,它出于某种原因返回了一个包含两个 ID 的数组。

所以在下面的代码中,$_SESSION['userid'] 变成了一个包含两个相同 ID 实例的数组。

虽然我不明白为什么...

$_SESSION['userid'] = getUserID($_POST['username']);


function getUserID($username)
{
    include 'db.inc.php';
    try {
        $sql = "SELECT id FROM user WHERE username = '". $username. "'";
        $s   = $pdo->prepare($sql);
        $s->bindValue(':username', $username);
        $s->execute();
    }
    catch (PDOException $e) {
        $error = 'Error getting userid for '.$username . '....error: '.$e;
        include $_SERVER['DOCUMENT_ROOT']."/database/includes/pages/error.html.php";
        exit();
    }
    $row = $s->fetch();
    return $row;

}

最佳答案

您的问题出在您的$s->fetch() 中。默认情况下,PDO 获取一个由字段和数字索引的数组,例如$row['id']$row[0] 试试这个:

$row = $s->fetch(PDO::FETCH_ASSOC);
return $row['id'];

参见 http://php.net/manual/en/pdostatement.fetch.php获取更多信息。

关于php - 为什么我的 SQL 查询返回一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164016/

相关文章:

php - 点击图片上传

php - 删除 .htaccess 中的 .php 扩展名不起作用

php - Laravel 5.1 - 进行迁移而不在 MySQL 中创建任何表

MySql 偏移量查询不起作用

java - java.sql.Timestamp(long) 使用哪个时区?

mysql - 不返回重复的 mysql 行

php - 如何使用 PHP 在 Mysql 中存储数组

php - 从 Objective-C 发送的 JSON 数据未在 sql 表中更新

mysql - 查找类型 B 和 C 之间发生的所有类型 A 的日志事件

php - 查询未正确运行