Вопрос MySQLi
1.
Erika (23.07.2012 / 15:57)
<?php
if(!($db=new mysqli("localhost", "db_user", "db_pass")))
{
print("Нет соединения с сервером базы");
exit;
}
if(mysqli_select_db($db,"db_name")===false)
{
print("База даных не обнаружена");
exit;
}
$db_array=$db->query("SELECT * FROM `for_theam` ORDER BY `id` DESC");
while($db_theam=mysqli_fetch_assoc($db_array))
{
$db_user=mysqli_fetch_assoc($db->query("SELECT * FROM `user` WHERE `id` = '".$db_theam['id_author']."' LIMIT 1"));
}
$db_array->close();/* Это здесь обязательно? */
$db->close();
?>
Добавлено через 03:02 сек.
Кгбэ пишу код с mysqli и мне стало интересно query() всегда закрывать close надо? Просто, если да то как мне поступить с $db_user? Кгбэ курсы переквалификации mysql->mysqli
2.
Артур (23.07.2012 / 16:04)
Желательно закрывать
db_user это не соединение с базой, там нечего закрывать.
$db_array->close();/* Это здесь обязательно? */ - это не нужно закрывать, это тоже не соединение с базой
3.
Erika (23.07.2012 / 16:09)
2.
Башка, то есть, актуально только $db->close();?
просто в мануалах она после каждго query() есть...
4.
Артур (23.07.2012 / 16:10)
MySQLi :: query возвращает объект класса mysqli_result implements Traversable, который, как можно судить по расширяемому интерфейсу, может быть итерирован в foreach цикле.
Функция mysqli_fetch_assoc реализует тот же подход, но поэлементарного итерирования. То есть то, что возвращается методом query не нужно close, а close нужно только соединение, то есть new mysqli
Добавлено через 01:21 сек.
Пример такого закрытия из мануала покажите
Добавлено через 02:31 сек.
Вообще в классе mysqli_result не определен метод close, следовательно его закрытие это ошибка
5.
Erika (23.07.2012 / 16:13)
4.
Башка, Очень подробно и доходчиво. Спасибо тебе большёе, очень помог)
Вопрос исчерпан, тему можно close(); ) ГГ)
6.
Артур (23.07.2012 / 16:15)
Не за что. Когда работаете с ООП, обращайте внимание на тип входного и выходного значения методов. Они могут быть объектными и там уже нужно смотреть что можно делать с этим возвращаемым объектом
Добавлено через 01:56 сек.
В частности ваш код можно упростить:
<?php
if(!($db=new mysqli("localhost", "db_user", "db_pass")))
{
print("Нет соединения с сервером базы");
exit;
}
if(mysqli_select_db($db,"db_name")===false)
{
print("База даных не обнаружена");
exit;
}
$db_user = [];
$db_array=$db->query("SELECT * FROM `for_theam` ORDER BY `id` DESC");
foreach($db_array as &$v){
$db_user[]=$db->query("SELECT * FROM `user` WHERE `id` = '".$v['id_author']."' LIMIT 1");
}
foreach($db_user as &$user){
foreach($user as &$property){
// Проход по свойствам каждого пользователя
}
}
$db->close();
?>
И побойтесь запросов в цикле, используйте JOIN
7.
Erika (23.07.2012 / 16:18)
6.
Башка, а подробнее об этом можно где-то почитать? Ток на русском желательно...
8.
Артур (23.07.2012 / 16:19)
О чем?
9.
Erika (23.07.2012 / 16:20)
Действительно, с foreach() он симпатичнее смотрится)
Я прост как-бы самоучка и трафа на поиск путёвых учебников тоже нет...
10.
Артур (23.07.2012 / 16:21)
PHP. Объекты, шаблоны и методики программирования. Путевый учебник по ООП в PHP
11.
Erika (23.07.2012 / 16:23)
8.
Башка, Обо всём PHP ООП, mysqli, PDO... Я кгбэ всё ем, ток на русском...
12.
Артур (23.07.2012 / 16:24)
Сейчас напишу
13.
Erika (23.07.2012 / 16:25)
12.
Башка, заранее благодарна)
14.
Артур (23.07.2012 / 16:29)
PHP:
PHP - объекты, шаблоны и методики программирования;
PHP 5 - полное руководство;
PHP 5.2 (Котеров, Костарев).
MySQLi - это оболочка обычного MySQL с небольшими дополнениями, о нем много чего тут
http://php.net/manual/ru/book.mysqli.php но я бы советовал переходить на PDO;
ООП:
Применение UML и шаблонов проектирования;
Анализ требований и проектирование систем;
Паттерны проектирования (2011г);
Приемы объектно ориентированного проектирования. Паттерны проектирования;
Архитектура корпоративных программных приложений;
SQL:
SQL Справочник (Кевин Клайн);
Самоучитель MySQL 5;
БД:
Введение в системы баз данных.
Для начала хватит
Добавлено через 01:01 сек.
Но все равно придется чтить документацию, так как системы изменяются быстрее чем книги. Документацию часто можно скачать к себе и спокойно переводить (с помощью того же электронного переводчика) экономя траф
15.
Erika (23.07.2012 / 16:30)
Огромное спасибо) Обязательно прочту)
16.
Артур (23.07.2012 / 16:31)
А, еще забыл тестирование:
Тестирование ОО ПО (Макгрегор, Сайкс)
Добавлено через 02:25 сек.
Не за что
17.
Erika (23.07.2012 / 16:39)
Нашла её) Уже скачиваю)
18.
Артур (23.07.2012 / 16:43)
У меня они все есть, могу одним архивом залить если сможете скачать
19.
Артур (24.07.2012 / 12:56)
http://webfile.ru/6049638 книги
20.
Pashka13 (24.07.2012 / 14:30)
19.
Башка, а отдельной ссылкой на книгу "PHP - объекты, шаблоны и методики программирования" не поделитесь?
21.
Артур (24.07.2012 / 14:52)
С этим вопросом вам к гуглу )
URL:
https://visavi.net/topics/33428