php - PDO结果为空但查询通过MySQL返回数据

标签 php mysql pdo

我有这个代码:

$sql = "SELECT Username,Level FROM users WHERE Username = :username";
print $sql;
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':username' => $username));
$data = $sth->fetchAll();
print_r($data);

没有打印任何数据,但是当我将 print $sql 的结果复制到 MySQL 并运行查询(用该列中的值替换 :username)时,我得到了结果。

为什么没有检索到数据?

编辑:$username 来自表单,所以我这样做:

$username = $_POST['username']; // print $username shows entered value

我的连接不是问题,我调用一个函数根据参数返回正确的连接

$debh = getConnection('read'); // creates connection with user with select privs

getConnection 内部:

    case "read":
        $connection = new PDO('mysql:host=' . $host . ';dbname=' . $dbName . '', "$readUser", "$readUserPassword");
        break;

最佳答案

这对我有用:

<?php
$username = 'user@email.com';
$dbh = new PDO('mysql:host=localhost;dbname=stackoverflow;charset=utf8', 'user', 'password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT Username,Level FROM users WHERE Username = :username";
print $sql;
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':username' => $username));
$data = $sth->fetchAll();
print_r($data);
  • 确保更改数据库凭据
  • user@email.com 是我数据库中的用户

关于php - PDO结果为空但查询通过MySQL返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28803061/

相关文章:

php - 在每三个字符之间放置破折号

php - 如何使用 jQuery 和 PHP 动态显示 MySQL 数据?

php - 当我应该得到结果时得到 array(0) { }

php - foreach里面的foreach合并两个mysql查询结果

PHP & MySQL : Simple code to implement Transaction - Commit & Rollback

php - 检查关联数组是否为空

php - 具有从属下拉列表的动态表单

mysql - 选择具有非唯一外键的行

php - 使用 PDO 将数组的日期格式更改为 MySQL 格式

php - 如何防止 PHP PDO 通过 jQuery AJAX 插入的 MySQL varchar 中的转义字符