2015-03-02 30 views
0

返回的数据我有这样的代码:PDO结果是空的,但查询通过MySQL的

$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); 

没有数据打印,但是当我复制打印$ SQL到MySQL的结果,运行查询(替换:使用用户名一个值在该列中)我得到一个结果。

为什么这不检索数据?

编辑:$用户名来自一个形式,所以我做的:

$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; 
+0

我可以看到'新PDO(...)' – 2015-03-02 05:20:30

+0

你如何初始化数据库连接的数据库凭据

  • [email protected]是用户$用户名? – 2015-03-02 05:23:51

  • +0

    执行完后,你可以检查'$ sth-> errorInfo()'来查看你是否错过了一些东西 – 2015-03-02 05:33:16

    回答

    0

    这个工作对我来说:

    <?php 
    $username = '[email protected]'; 
    $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); 
    
    • 确保更改我的数据库