Вопрос 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