Php PDO结果为空,但查询通过MySQL返回数据
我有以下代码:Php PDO结果为空,但查询通过MySQL返回数据,php,mysql,pdo,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->fetchAl
$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);
我可以查看数据库连接吗新建PDO(…)
如何初始化$username?执行后,您可以检查$sth->errorInfo()
以查看是否遗漏了某些内容。您也可以打印($\u POST)
并查看是否$\u POST['username']代码>isset。我在任何地方都看不到那张支票(至少是你贴的)。我的解决方案超过了一个静态值,只是为了测试目的为了让它工作,我手动设置$username,但仍然没有输出。