PDO bindParam不会绑定

时间:2012-03-15 02:02:20

标签: php pdo prepared-statement sqlbindparameter

我有以下准备好的声明,它不会绑定$u

$db = 'test';
$dbt = 'accounts';
$u = 'jacob';

$getAccountInfo = $dbh->prepare("SELECT `status`,`pass`,`fail_count`,`tel`,`role` FROM `$db`.`$dbt` WHERE `user`=:user;");
    $getAccountInfo->bindParam(':user', $u, PDO::PARAM_STR);
$getAccountInfo->execute();
$accountInfo = $getAccountInfo->fetch(PDO::FETCH_ASSOC);

echo '<p>$getAccountInfo: "';
var_dump($getAccountInfo);
echo '"</p>$accountInfo: "';
var_dump($accountInfo);
echo "\"<p>" . $accountInfo['status'] . "</p>";

它返回:

  

$ getAccountInfo:“object(PDOStatement)#2(1){[”queryString“] =&gt;   string(109)“SELECT statuspassfail_counttelrole FROM   testaccounts WHERE user =:user;“}”

     

$ accountInfo:“bool(false)”

(我尝试过bindValue等)

没有错误消息/异常(但如果我在正确的数据库连接信息中提供它,则会抛出错误)

如果我将返回的sql复制/过去到命令行中并将:user替换为'jacob',它就可以了。

编辑:原来问题是脚本使用的帐户没有表accounts的权限(即使它有selecttest.*)。我认为原因是因为accounts是在我将select选择授予该帐户后创建的:/

1 个答案:

答案 0 :(得分:0)

原来问题是脚本使用的帐户没有表帐户的权限(即使它有一个select for grant。*)。我认为原因是因为帐户是在我将select选择授予该帐户后创建的:/