Как читать выборку (PDO :: FETCH_ASSOC);

Я пытаюсь создать веб-приложение с помощью PHP, и я использую memcached для хранения пользовательских данных из БД.

Например, скажем, что у меня есть этот код:

$sql = "SELECT * FROM users WHERE user_id = :user_id"; $stmt = $this->_db->prepare($sql); $result = $stmt->execute(array(":user_id" => $user_id)); $user = $stmt->fetch(PDO::FETCH_ASSOC); 

Я не уверен, как читать переменную $user и получать данные из нее. Мне нужно будет прочитать столбец электронной почты и пароля.

Я надеялся, что кто-то сможет объяснить мне, как это работает.

благодаря

PDOStatement :: fetch возвращает строку из набора результатов. Параметр PDO::FETCH_ASSOC сообщает PDO возвращать результат как ассоциативный массив.

Ключи массива будут соответствовать вашим именам столбцов. Если ваша таблица содержит столбцы «электронная почта» и «пароль», массив будет структурирован следующим образом:

 Array ( [email] => 'youremail@yourhost.com' [password] => 'yourpassword' ) 

Чтобы прочитать данные из столбца «email», выполните следующие действия:

 $user['email']; 

и для «пароля»:

 $user['password']; 

Цикл через массив, как и любой другой ассоциативный массив:

 while($data = $datas->fetch( PDO::FETCH_ASSOC )){ print $data['title'].'<br>'; } 

или

 $resultset = $datas->fetchALL(PDO::FETCH_ASSOC); echo '<pre>'.$resultset.'</pre>'; 

Чтобы прочитать результат, вы можете прочитать его как простой php-массив.

Например, получить name можно, например, $user['name'] и так далее. Метод fetch(PDO::FETCH_ASSOC) возвращает только 1 кортеж tho. Если вы хотите получить все кортежи, вы можете использовать fetchall(PDO::FETCH_ASSOC) . Вы можете пройти через многомерный массив и получить значения одинаковыми.

PDO:FETCH_ASSOC помещает результаты в массив, где значения отображаются на их имена полей.

Вы можете получить доступ к полю name следующим образом: $user['name'] .

Я рекомендую использовать PDO::FETCH_OBJ . Он извлекает поля в объекте, и вы можете получить доступ так: $user->name

метод

 $user = $stmt->fetch(PDO::FETCH_ASSOC); 

возвращает словарь . Вы можете просто получить электронную почту и пароль:

 $email = $user['email']; $password = $user['password']; 

Другой метод

 $users = $stmt->fetchall(PDO::FETCH_ASSOC); 

возвращает список словарей

/ * Шаблон проектирования «шлюз данных таблицы данных» * /

 class Gateway { protected $connection = null; public function __construct() { $this->connection = new PDO("mysql:host=localhost; dbname=db_users", 'root', ''); } public function loadAll() { $sql = 'SELECT * FROM users'; $rows = $this->connection->query($sql); return $rows; } public function loadById($id) { $sql = 'SELECT * FROM users WHERE user_id = ' . (int) $id; $result = $this->connection->query($sql); return $result->fetch(PDO::FETCH_ASSOC); // http://php.net/manual/en/pdostatement.fetch.php // } } 

/ * Печатать всю строку только с помощью столбца 'user_id' * /

 $gateway = new Gateway(); $users = $gateway->loadAll(); $no = 1; foreach ($users as $key => $value) { echo $no . '. ' . $key . ' => ' . $value['user_id'] . '<br />'; $no++; } 

/ * Распечатать user_id = 1 со всеми столбцами * /

 $user = $gateway->loadById(1); $no = 1; foreach ($user as $key => $value) { echo $no . '. ' . $key . ' => ' . $value . '<br />'; $no++; } 

/ * Распечатать user_id = 1 с адресом электронной почты и паролем колонки * /

 $user = $gateway->loadById(1); echo $user['email']; echo $user['password'];