Я пытаюсь создать веб-приложение с помощью 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'];