Воскресенье, 22 Декабря 2024, 15:06

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
[PHP] Множество запросов к БД
dima9595Дата: Суббота, 18 Октября 2014, 18:12 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Доброго времени суток!
Всё разрабатываю свой сайт. И как всегда появился очередной вопрос:
У меня есть класс работы с БД:
Код

<?php
class DB{
     // Здесь пропущен код

     public function select($tables, $table, $where, $sort){
      ## Запрос SELECT (получение данных столбцов -> из таблицы -> по условию -> с сортировкой)
      $this->select = mysql_query("SELECT $tables FROM $table $where $sort");
     }

     public function fetch_array(){
      ## Получаем данные из SELECT и записываем в массив
      $this->fetch_array = mysql_fetch_array($this->select);
     }

     // Здесь пропущен код
}

// Здесь пропущен код
?>


В различных файлах я использую функции в таком стиле:
Код

$db->select(...);
$db->fetch_array();


Это всё работает. А когда мне нужно будет несколько запросов select (и т.п.) сделать, то они у меня в перемешку уходят.

Так в чём проблемма: мне нужен совет по разделению запросов...

Пробовал таким образом - не работало, как и ожидалось:
Код

$sel = $db->select(...);
$sel_a = $db->fetch_array();


Так как мне всё это сделать? Подскажите пожалуйста!




Сообщение отредактировал dima9595 - Суббота, 18 Октября 2014, 18:13
lvovandДата: Суббота, 18 Октября 2014, 19:04 | Сообщение # 2
старожил
Сейчас нет на сайте
судя по коду, как-то так
$sel1 = $db->select(...);
$arr1 = $db->fetch_array();

$sel2 = $db->select(...);
$arr2 = $db->fetch_array();


Разработка и продвижение сайтов. Дизайн
dima9595Дата: Суббота, 18 Октября 2014, 19:10 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Цитата lvovand ()
судя по коду, как-то так
$sel1 = $db->select(...);
$arr1 = $db->fetch_array();

$sel2 = $db->select(...);
$arr2 = $db->fetch_array();


Цитата dima9595 ()
Пробовал таким образом - не работало, как и ожидалось:


lvovandДата: Суббота, 18 Октября 2014, 19:24 | Сообщение # 4
старожил
Сейчас нет на сайте
сделай вывод того,что в классе происходит, чтобы понять что не работает

Разработка и продвижение сайтов. Дизайн
dima9595Дата: Суббота, 18 Октября 2014, 22:16 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
lvovand, работать-то работает, а вот если делать несколько запросов, допустим, "$db->select();", то будет последний рабочий. Т.е. мне нужно как-то разделить запросы в переменные, что ли...

lvovandДата: Суббота, 18 Октября 2014, 22:41 | Сообщение # 6
старожил
Сейчас нет на сайте
запутал если честно, что значит несколько зарпосов?
сделал одну выборку, получил данные, потом сделал вторую, так?
покажи код, где ты вызов запросов делаешь


Разработка и продвижение сайтов. Дизайн
last2424Дата: Суббота, 18 Октября 2014, 23:18 | Сообщение # 7
30 мл. блоков
Сейчас нет на сайте
Он имеет ввиду что ему надо через $db проводить несколько выборок одновременно, скорее всего у него как то не правильно база настроена в конфиге.

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
lvovandДата: Воскресенье, 19 Октября 2014, 03:33 | Сообщение # 8
старожил
Сейчас нет на сайте
last2424, как я понял, выборка то может и одна, но если в ней больше одного значения, то
строка mysql_fetch_array($this->select) уже не прокатит, нужно пройтись по всем строкам результата
while($row = mysql_fetch_array($this->select)){
$arr[] = $row;
}

и тогда в $arr уже будет массив из всех строк


Разработка и продвижение сайтов. Дизайн
dima9595Дата: Воскресенье, 19 Октября 2014, 19:40 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
По ходу ни кто ни чего не понял.
Я имел ввиду то, что если использовать 2 $db->select(); (т.е. 2 различных вопроса), то функция $db->fetch_array(); поместит только 1 запрос $db->select();...

Это тоже самое, что и:
Код

$select = mysql_query(...);
$select = mysql_query(...);

$fetch = mysql_fetch_array($select);
$fetch = mysql_fetch_array($select);




Сообщение отредактировал dima9595 - Понедельник, 20 Октября 2014, 17:52
last2424Дата: Воскресенье, 19 Октября 2014, 20:53 | Сообщение # 10
30 мл. блоков
Сейчас нет на сайте
dima9595, лол, так вайл нельзя использовать, каждый раз изменять значение?

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
dima9595Дата: Понедельник, 20 Октября 2014, 17:55 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
last2424, хз) мне кажется что слишком много кода выйдет, если у меня на странице >3 запросов необходимые для вывода.
Попробую что нибудь сегодня да замутить)

Добавлено (20.10.2014, 17:55)
---------------------------------------------
Всем спасибо за советы!


Snake174Дата: Вторник, 21 Октября 2014, 06:11 | Сообщение # 12
участник
Сейчас нет на сайте
Попробуй так:
Код

public function select( $tables, $table, $where, $sort )
{  
   ## Запрос SELECT (получение данных столбцов -> из таблицы -> по условию -> с сортировкой)  
   $this->select = mysql_query("SELECT $tables FROM $table $where $sort");  

   return $this->select; // добавить
}  

public function fetch_array( $select )  // параметр select
{  
   ## Получаем данные из SELECT и записываем в массив  
   $this->fetch_array = mysql_fetch_array( $select );  

   return $this->fetch_array;  // добавить
}  


И уже нормально пользоваться тем, что писал выше:
Код

$sel1 = $db->select(...);  
$arr1 = $db->fetch_array( $sel1 );  

$sel2 = $db->select(...);  
$arr2 = $db->fetch_array( $sel2 );  


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
dima9595Дата: Среда, 22 Октября 2014, 16:23 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
Snake174, Благодарю за помощь. Попробую)

Добавлено (22.10.2014, 16:23)
---------------------------------------------
всё работает! + всем поставлю!


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг