2012-03-15 3 views
0

я получил следующее подготовленное заявление, и он просто не будет связывать $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 WHERE user =: пользователь; "}"

$ AccountInfo: "BOOL (ложь)"

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

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

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

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

ответ

0

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

Смежные вопросы