2014-01-06 6 views
0

У меня есть функция, которая напечатана ниже. Это предназначено для динамического вывода пользовательских данных из базы данных с использованием PDO (эта ситуация ясна и все работает хорошо). (. Я е письмо для вас ("электронная почта)) Но, вместо возвращения результата, он возвращает число 1.Функция возвращает 1 вместо результата (PDO)

Вот мои настройки:

public function you($row) { 
    if(isset($_COOKIE["SK"])) { 
     $pw = $this->baseXencode($_SESSION["password"]); 
     $usr = $this->baseXencode($_SESSION["username"]); 
     $q = "SELECT $row FROM SN_users WHERE username=':USR' AND password=':PW'"; 
     $this->netCore->q($q); 
     $this->netCore->bind(":PW", $pw); 
     $this->netCore->bind(":USR", $usr); 
     $result = $this->netCore->single(); 
     $result = $result[$row]; 
     return $result; 
    } else { 
     $q = "SELECT $row FROM SN_users WHERE username='Anonymous' AND password='Anonymous'"; 
     $this->netCore->q($q); 
     $result = $this->netCore->single(); 
     $result = $result[$row]; 
     return $result; 
    } 
} 
} 

$this->netCore->q() = PDO query 
$this->netCore->single() PDO fetch(PDO::FETCH_ASSOC) 

А -> привязывать, само- пояснительный.

Пожалуйста, помогите, буду очень высоко ценится. ^^

ответ

0

при использовании параметризованных запросов, вы не ставите параметры в кавычках. это предотвращает параметры из замещено, поскольку он рассматривается как литерал Это должно быть:

$q = "SELECT $row FROM SN_users WHERE username=:USR AND password=:PW"; 

Я удивлен, что он возвращается 1. Я ожидаю, что ваш код вызовет ошибку, потому что single() должен возвращать false, а false[$row] недействителен.

Вы также должны проверить, что строка была возвращена; если имя пользователя и пароль недействительны, вы не получите результат. Так оно и должно быть:

$result = $this->netCore->single(); 
    if ($result) { 
     return $result[$row]; 
    } else { 
     return false; 
    } 

И вызывающий you() нужно проверить значение, а также.

+0

Это публичная функция single() {$ this-> exe(); возвращает $ this-> state-> fetch (PDO :: FETCH_ASSOC); } в моем классе spiritNET. Кроме того, я пробовал ваше предложение, не повезло ... Может быть, функция single() поможет? – NievesPROD

+0

Я следил за гидом в Culttt, озаглавленным «Rool out your own PDO class». Ссылка, для которой здесь: http://culttt.com/2012/10/01/roll-your-own-pdo-php-class/ – NievesPROD

+0

'single()' именно то, что я ожидал. Вы уверены, что дали действительное имя пользователя и пароль? – Barmar

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