PDO bindParam не будет связывать - PullRequest
0 голосов
/ 15 марта 2012

У меня есть следующее подготовленное утверждение, и оно просто не будет связывать $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 "] => строка (109) "ВЫБРАТЬ status, pass, fail_count, tel, role ОТ test. accounts ГДЕ user =: пользователь; "}"

$ accountInfo: "bool (false)"

(я пробовал bindValue и т. Д.)

Нет сообщений об ошибках / исключений (но если я предоставлю правильную информацию о подключении к БД, будет выдано сообщение об ошибке)

Если я скопирую / вставлю возвращенный sql в командную строку и заменим :user на 'jacob', все будет работать нормально.

EDIT : Оказывается, проблема в том, что учетная запись, которую использовал скрипт, не имела привилегий для таблицы accounts (даже если она имеет select грант для test.*). Я думаю, причина в том, что accounts было создано после того, как я предоставил выбор для этой учетной записи: /

1 Ответ

0 голосов
/ 23 марта 2012

Оказывается, проблема заключалась в том, что учетная запись, которую использовал скрипт, не имела привилегий для учетных записей таблицы (даже если у нее есть право выбора для тестирования. *). Я думаю, что причина в том, что учетные записи были созданы после того, как я предоставил выбор для этой учетной записи: /

...