2016-09-17 173 views
-1

我试图从数据库中获取一个特定的值,但是它总是返回1而不是预期的结果。PHP MySQL PDO查询总是返回1

我是PHP和PDO的新手。

下面是该查询

$query = " 
      SELECT 
       email, 
       userlevel 
      FROM users 
      WHERE 
       username = :username 
     "; 

下面是参数值,我通过

$query_params = array( 
      ':username' => $_SESSION['user']["username"] 
     ); 

然后我跑

$stmt = $db->prepare($query); 
$result = $stmt->execute($query_params); 
$row = $stmt->fetch(); 

,当我尝试以显示与该代码的结果,它总是返回1

<?php echo print_r(array_values($row)); ?> 

预期的结果应该是这样的

Array 
(
     (
      [email] => [email protected] 
      [userlevel] => 5 
     ) 

) 

我一直在寻找了几个小时,我只是似乎无法找到问题。 我已验证用户名参数传递正确。

+0

当执行'$ stmt-> fetch(PDO :: FETCH_ASSOC)时会发生什么;'? – Parziphal

+0

'echo print_r'是一团糟。 ''echo'与print_r'相同,并且'print_r'返回'1'(或者可能是'true'),所以你看到它'echo'' –

+0

调试:'var_dump($ _SESSION ['user'] [ “用户名”],$ result,$ row);' - 紧接在$ row = $ stmt-> fetch();'语句之后。显示?你认为有用的任何东西? –

回答

0

由于@RyanVincent指出使用var_dump()允许我看看$行中的值是多少。因为它是一个数组,所以它必须被读作$row["userlevel"]

运行var_dump($row)给出array(2) { ["email"]=> string(23) "[email protected]" ["userlevel"]=> string(1) "5" }作为结果。

感谢@RyanVincent和其他人的帮助!

+0

@RyanVincent我发布了它,但我想知道为什么'<?php echo print_r(array_values($ row)); ?>没有工作。 – Bandon

+0

分手吧? 'var_dump($ row,array_values($ row));'。请记住,您可以在PHP中存储任何内容。所以,'$ arrayValuesRow = array_values($ row);'所以,显示:'var_dump($ arrayValuesRow);'。和 - 'print_r($ arrayValuesRow);'。他们应该工作。您可能需要将'print_r'封装在HTML'

...
'标记中。 –