0

次の準備済みステートメントがありますが、バインドされません$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"]=> string(109) "SELECT status, pass, fail_count, tel, roleFROM test. accountsWHERE user=:ユーザー;" } "

$accountInfo: "bool(false) "

(bindValueなどを試しました)

エラーメッセージ/例外はありません(ただし、正しいデータベース接続情報で指定すると、エラーがスローされます)

返された sql をコピーしてコマンドラインに貼り付け、 に置き換える:user'jacob'、問題なく動作します。

EDIT :問題は、スクリプトが使用していたアカウントにテーブルに対する権限がなかったことでしたaccounts(権限がselect付与されていてもtest.*)。accountsその理由は、そのアカウントに選択を許可した後に作成されたためだと思います:/

4

1 に答える 1

0

問題は、スクリプトが使用していたアカウントが、テーブル アカウントに対する権限を持っていないことでした (テスト用の選択権限があっても)。その理由は、そのアカウントに選択を許可した後にアカウントが作成されたためだと思います:/

于 2012-03-23T04:37:51.127 に答える