я получил следующее подготовленное заявление, и он просто не будет связывать $u
:PDO bindParam не будет связывать
$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: «объект (PDOStatement) # 2 (1) {[ "QueryString"] => строка (109) «SELECT
status
,pass
,fail_count
,tel
,role
ОТtest
.accounts
WHEREuser
=: пользователь; "}"$ AccountInfo: "BOOL (ложь)"
(я пробовал bindValue и т.д.)
Нет ошибок сообщений/исключения (но если Я даю его в правильной информации о подключении db, он выдает ошибку)
Если я скопирую/прошлю возвращенный sql в командную строку и замените :user
на 'jacob'
, он работает нормально.
EDIT: Оказывается, проблема заключалась в том, что учетная запись скрипт использует не имеют привилегий для таблицы accounts
(даже то, что имеет select
грант на test.*
). Я думаю, причина в том, что accounts
был создан после того, как я предоставил вам выбор:/