Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / MySQLi PHP. Составной запрос, зависящий от условий / 15 сообщений из 15, страница 1 из 1
17.11.2013, 17:52
    #38467844
MySQLi PHP. Составной запрос, зависящий от условий
Добрый день, многоуважаемое сообщество.
Подскажите пожалуйста, каким способом используя MySQLi в PHP можно выполнять составные подготовленные запросы?
Пример того, что я имею ввиду под составными запросами и как это делалось при помощи обычных запросов MySQL:
Код: php
1.
2.
3.
4.
5.
$sql = "SELECT * FROM table WHERE type = 10";
$terms = "";
if (isset($foo)) $terms .= " AND quality = ".$foo;
if (isset($bar)) $terms .= " AND color = '".$bar."'";
$result = mysql->query($sql.$terms);


Буду благодарен.
...
Рейтинг: 0 / 0
17.11.2013, 18:32
    #38467861
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
Да практически так же. В доке взгляните на примеры.
...
Рейтинг: 0 / 0
17.11.2013, 21:01
    #38467929
MySQLi PHP. Составной запрос, зависящий от условий
miksoft,

Извините, не могу найти пример именно с prepare и execute. Чтобы было разное количество плейсхолдеров. Если не затруднит, дайте ссылочку пожалуйста.
...
Рейтинг: 0 / 0
18.11.2013, 00:06
    #38468025
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
...
Рейтинг: 0 / 0
18.11.2013, 01:17
    #38468061
MySQLi PHP. Составной запрос, зависящий от условий
miksoft,

Спасибо. Но я ищу немного другое. Меня интересует, как указывать различное количество параметров (bind_param) в зависимости от того, как был сконструирован сам запрос (исходя из моего первого поста).
Т.е. бывает ситуация, когда в bind_param указывается один параметр, а бывает, при наличии определенных условий, к запросу присоединяются дополнительные условия WHERE и параметров в bind_param уже нужно указать больше. Вот в этом-то и вопрос.

В моем примере существует ситуация, когда переменные $foo и $bar не определены, тогда в mysqli запросе будет единственный плейсхолдер type, однако существует возможность появления в запросе одного или сразу двух дополнительных параметров, в зависимости от определения переменных $foo и $bar. Вот как в такой ситуации быть с mysqli?
...
Рейтинг: 0 / 0
18.11.2013, 01:47
    #38468067
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
Денис Бондарь,

Не понимаю в чем проблема. Нужно три плейсхолдера - строите (и отправляете в prepare) запрос с тремя плейсхолдерами и биндите три параметра.
...
Рейтинг: 0 / 0
18.11.2013, 01:51
    #38468068
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
Вот, в соседней ссылке как раз три бинда.
http://php.ru/manual/mysqli-stmt.execute.html
...
Рейтинг: 0 / 0
18.11.2013, 17:20
    #38468912
MySQLi PHP. Составной запрос, зависящий от условий
miksoft,

Проблема в том, что в зависимости от условий, от которых будет зависеть содержание запроса, расположение плейсхолдеров в запросе будет разным.
Если переписать мой пример:
Код: php
1.
2.
3.
4.
5.
6.
7.
$sql = "SELECT * FROM table WHERE type = ?";
$terms = "";
if (isset($foo)) $terms .= " AND quality = ?";
if (isset($bar)) $terms .= " AND color = ?";
$stmt = mysqli->prepare($sql.$terms);
$stmt->bind_param("iis", $type, $foo, $bar);  // Вот тут не всегда плейсхолдеры будут соответствовать параметрам
$stmt->execute();


Тут может быть ситуация, когда в запросе один плейсхолдер, два плейсхолдера (причем либо $foo либо $bar) и три плейсхолдера.
...
Рейтинг: 0 / 0
18.11.2013, 17:39
    #38468940
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
http://www.php.net/manual/en/mysqli-stmt.bind-param.php#89171
фокус в функции call_user_func_array
просмотрите и другие комменты с использованием этой функции
...
Рейтинг: 0 / 0
18.11.2013, 17:58
    #38468967
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
Кстати, тема не совсем по адресу, так что топик перенесу. По идее, там больше вариантов должны предложить.

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
18.11.2013, 18:22
    #38468999
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQLi PHP. Составной запрос, зависящий от условий
...
Рейтинг: 0 / 0
18.11.2013, 22:23
    #38469212
MySQLi PHP. Составной запрос, зависящий от условий
Код: php
1.
SELECT * FROM table WHERE type = ? AND quality LIKE ? AND color LIKE ?;


http://www.php.net/manual/ru/mysqli-stmt.bind-param.php#108790
...
Рейтинг: 0 / 0
19.11.2013, 14:45
    #38469976
MySQLi PHP. Составной запрос, зависящий от условий
как-то так...,

Использование условий по полям quality и color не всегда необходимо. Например наборной фильтр на сайте. Если опция не включена - не фильтруем вообще.
...
Рейтинг: 0 / 0
19.11.2013, 15:09
    #38470008
MySQLi PHP. Составной запрос, зависящий от условий
Ну не фильтруй... если не плступило значения ставь %
Там следующий пример как раз твой составной запрос если считаешь что этот запрос будет тяжелым.
...
Рейтинг: 0 / 0
19.11.2013, 17:20
    #38470247
MySQLi PHP. Составной запрос, зависящий от условий
как-то так...,

Спасибо! Кажется, это то, что нужно.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / MySQLi PHP. Составной запрос, зависящий от условий / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]