|
|
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
Привет. Подскажите, как решить такую проблему. У меня есть массив значений, которые я хочу использовать в функции ibase_execute. Если массив маленький, то можно вручную перечислить все его аргументы, например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 10:05 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
цикл...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 10:27 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
GDRА что делать, когда параметров в запросе (соответственно в массиве значений) 200 и больше(реальная задача)? Честно говоря, очень сомневаюсь, что такая задача реальна. По крайней мере такое решение уж точно не будет оптимальным и стоит пересматривать сам запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 10:40 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
2 Berkut - задача реальная - обработка данных статистики и запись в БД. Так что не сомневайтесь. 2 ScareCrow - а чем цикл поможет. Хотя я сейчас гляжу в сторону eval(), т.е. формирование полной строки вызова функции, но не с переменными-аргументами, а ее значением и последующий вызов eval с этой строкой. Пока не попробовал, но должно работать. Правда по мне это не выход :(. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 11:01 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
Попробовал сделать с помощью eval() - работает. Не думал правда, что для решения этой задачи придется использовать такие извращения. Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Формирование параметров из массива, формирование строки и вызов eval() можно поместить в цикл по строкам массива $arr. Как вариант - можно было формировать тело самого запроса вместе с параметрами. Но тогда бы проиграли в скорости выполнения запроса. В предложенном случае prepare + eval() для многочисленных вызовов я думаю будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 11:17 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
GDR$params.= '\''.$arr[$i].'\''; ... $str = '$r = ibase_execute($ibquery,'.$params.');'; eval($str);Не будет работать, если в $arr[$i] будет находиться символ '. А вообще я бы начал с ознакомления со всеми функциями ibase и прочтением комментариев пользователей - довольно часто там можно найти решение своей проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 12:09 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
Тогда можно предложить такой вариант (первое, что в голову прилетело): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 12:10 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
2 GDR Не знаю, то или нет? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 12:12 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
2 * - действительно, если в массиве будет присутствовать . (точка), то действительно будет косяк. Но у меня в массиве точек нет - только целые числа (не дробные). 2 Berkut - то-то оно то, но я писал про ibase_prepare(), а это значит, что формируется тело запроса, вместо параметров ставятся ?, делается ibase_prepare() этого запроса, после чего в цикле делается ibase_execute() с подсовыванием этой функции параметров. Все это нужно для того, чтобы ускорить процесс выполнения и чтобы сервер не делал лишних операций по разбору запроса (если запрос одинаковый, а меняются лишь параметры). Наверное ты это и без меня знаешь. Найденный вариант решения с использованием eval() - рабочий, проверял. Но видимо придется что-то переделать или использовать специфику сервера (для знакомых с IB/FB - думаю ХП меня выручит), т.к. не все устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 13:10 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
GDR2 * - действительно, если в массиве будет присутствовать . (точка), то действительно будет косяк. Но у меня в массиве точек нет - только целые числа (не дробные).Точка здесь не при чём - я говорил о кавычке (одинарной). Впрочем, если речь идёт лишь о цифрах - тогда да, по барабану. Однако в плане безопасности рано или поздно подобный подход может привести к случайной дыре.Найденный вариант решения с использованием eval() - рабочий, проверял. Но видимо придется что-то переделать или использовать специфику сервера (для знакомых с IB/FB - думаю ХП меня выручит), т.к. не все устраивает.Мне лично тоже вариант с eval не нравится - но к сожалению в IB/FB и взаимодействии с ним на PHP не шарю совершенно - а то бы мож чего подсказал ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 13:29 |
|
||
|
(PHP) Массив значений -> в отдельные параметры функций
|
|||
|---|---|---|---|
|
#18+
GDR2 * - действительно, если в массиве будет присутствовать . (точка), то действительно будет косяк. Но у меня в массиве точек нет - только целые числа (не дробные). 2 Berkut - то-то оно то, но я писал про ibase_prepare(), а это значит, что формируется тело запроса, вместо параметров ставятся ?, делается ibase_prepare() этого запроса, после чего в цикле делается ibase_execute() с подсовыванием этой функции параметров. Все это нужно для того, чтобы ускорить процесс выполнения и чтобы сервер не делал лишних операций по разбору запроса (если запрос одинаковый, а меняются лишь параметры). Наверное ты это и без меня знаешь. Найденный вариант решения с использованием eval() - рабочий, проверял. Но видимо придется что-то переделать или использовать специфику сервера (для знакомых с IB/FB - думаю ХП меня выручит), т.к. не все устраивает. К сожалению (или к счастью), ни разу не сталкивался Interbase'ом, поэтому ничего сказать не могу. Что касается повторного разбора запроса, то конечно согласен. :) Удачи! P.S. Все-таки интересно, что это за "зверь" такой, где нужно передавать 200 параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 15:24 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33085119&tid=1478214]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 456ms |

| 0 / 0 |
