Начал осваивать появился вопрос я подключаюсь к базе и хочу запросить все значения в таблице будет ли разница между вот таким запросом Код (PHP): while($row = $stmt->fetchAll()) { print_r($row); } while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { print_r($row); } Как я понял из справки - fetchAll() - функция получения всех строк разом. Флаг - PDO::FETCH_ASSOC Возвращает массив. Если нет разницы то чем пользоваться.
Это он строку из результирующей таблицы превращает в массив... Понимаешь? Кароч если результирующая таблица такого вида: Код (Text): Id / Name / Gender / ... То и получаемый массив будет вида: Код (Text): array('Id' => '1', 'Name' => 'AnteFil', 'Gender' = 'm', ...) Понимаешь? Этот метод возвращает массив из всех строк результирующего набора. PDOStatement::fetch - вернет массив из одной строки результирующего набора. PDOStatement::fetchAll - вернет массив из всех строк результирующего набора.
Да понял получаеться если я хочу запросить 1 пользователя из базы с его id и паролем то уместно использовать fetch если я хочу запросить 20 пользователей из базы с его id и паролем то fetchAll либо, либо в старой версии я мог запросить всех из базы а потом форычем перебирать в PDO уже пребирать форычем не требуеться я правильно понимаю ???
Наверное, да. Предварительно проверив, что результирующий набор имеет одну строку, иначе - выбросить исключение. Ну да. Не понимаю о чем ты.
Ну например я запрашиваю 20 пользователей по id из базы мне нужно их почту напечатать. foreach ($vse_polzovateli as $email) { $email = 'НЕТ почты'; инсерт в базу }
ну это как пример в итоге я понял что можно обобраться к отдельному пользователю сразу не перебирая всех ещё такой вот вопрос по поводу try { и } catch при подключении к базе Код (PHP): try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { die('Подключение не удалось: ' . $e->getMessage()); } Так вот, дети, запомните: так делать не надо НИКОГДА. Для того, чтобы всего лишь показать ошибку, try..catch используют только дураки: - во-первых, этот код избыточен: РНР покажет ошибку и так, безо всяких try..catch. - во-вторых, этот код гораздо менее гибкий: он выводит ошибку ТОЛЬКО на экран, в то время как исключение улетит туда же, куда и все остальные ошибки: либо в лог файл, либо на экран, в зависимости от глобальных настроек. - в-третьих, этот код лишает нас возможности обрабатывать все ошибки централизованно, в едином exception handler-е. Поэтому использовать try..catch нужно только тогда, когда вы собираетесь ОБРАБОТАТЬ ошибку - то есть, совершить какое-то действие, связанное с ФАКТОМ ошибки - откатить транзакцию, например. Для того же, чтобы просто выдать сообщение об ошибке, try..catch использовать не нужно - PHP прекрасно справится сам Добавлено спустя 3 минуты 49 секунд: Я уже спрашивал подобное viewtopic.php?f=13&t=51320 только там я задавал вопрос про mysql так как быть в итоге
В тебе проснулся программист? Вроде до нового года еще есть время... Try catch используется для отлова ошибок, а что ты будешь делать зависит от тебя. У тебя включен вывод ошибок на экран? Бугага, он делает то что ты указал ему. Почему ты так возмущаешься? А почему нельзя обработать с помощью трая подключение к базе? Объясни Я не верю. Есть 2 направления писать без трай катч и использовать их. При использовании трая код становится читабельней, глаза не разбегаются от большого количества ифов и позволяет сразу сконцентрироваться и найти то место где происходит обработка ошибки. Трай катч это бест практис. Учись студент.
Там не мой текст я его скопировал http://phpfaq.ru/pdo забыл сказать Добавлено спустя 19 секунд: Это как вопрос нужно или нет указывать
Ну ты как бы не забывай указывать, я то думал ты сам до этого дошел и так написал Try catch используется для обработки ошибки. У тебя в проде надеюсь будет выключен вывод ошибок на экран? Обработай ошибку как нибудь. Можешь использовать но только надо включать голову и думать как правильно использовать то что предоставляет пхп. впринципе там написано все верно (фаг).
Так а как быть то тогда если к примеру я хочу не выводить ошибку о подключении к базе а положить её в лог файл
Вопрос возник хочу я выполнить вот такой запрос Код (PHP): $stmt = $conn->prepare('SELECT * FROM user'); Как быть в этой ситуации? Подменять переменные не нужно Код (PHP): $stmt->execute(array(':id' => $id)); это отпадает так как переменных нет соответственно дальше как то так $stmt->execute(); а вот как быть с возвратом данных Добавлено спустя 1 минуту 18 секунд: fetchAll ???
Если использовать fetchAll так тогда пофиг какой флаг стоит в fetch хоть PDO::FETCH_OBJ хоть PDO::FETCH_ASSOC Добавлено спустя 5 минут 31 секунду: Да в принцепе его вообще можно не использовать )))))
похоже я в зебре у антюшки. так и не узнаю подарил ли ему дед мороз мозги на новый год. ну и ладно. всех с наступающим!
ты в психо-эмоциональном игноре у антюшки Добавлено спустя 2 минуты 45 секунд: Ладно попробую написать вывод новостей