Как исправить ошибку в php (function createQuery)

369
13 января 2017, 11:21

Всем здравствуйте, подскажите как исправить ошибку Cannot redeclare createQuery(), как я понял нельзя так две функции писать, скорее всего это грубейшая ошибка, помогите решить эту задачу..

                function createQuery($id, $a, $b){
                    $query = "INSERT INTO opisanie (x,text,text_opis) VALUES ";
                    $limit = count($a);
                    for($i=0; $i<$limit; $i++){
                        $query .= "('{$id}','{$a[$i]}', '{$b[$i]}')".($i!=$limit-1?',':'');
                    }
                    $res = mysql_query($query);
                }
                $aText = $_POST['form_text_o'];
                $aOpis = $_POST['form_text_opis'];
                $query = createQuery($id, $aText, $aOpis);

                function createQuery( $e, $s, $c, $d, $id){
                    $queryz = "INSERT INTO menu_zav (name,sostav,gramm,cena,x_zav) VALUES ";
                    $limita = count($e);
                    for($is=0; $is<$limita; $is++){
                        $queryz .= "('{$e[$is]}','{$s[$is]}','{$c[$is]}','{$d[$is]}','{$id}')".($is!=$limita-1?',':'');
                    }
                    $resa = mysql_query($queryz);
                }
                $eName = $_POST['form_name_menu'];
                $eOpisa = $_POST['form_opis_menu'];
                $eGr = $_POST['form_gr_menu'];
                $eCena = $_POST['form_cena_menu'];
                $queryz = createQuery($eName, $eOpisa, $eGr, $eCena, $id);
Answer 1

Так как это PHP, а не Java или C#, к примеру, где можно писать одинаковые имена методов, но с разной сигнатурой (перегрузка методов), то единственным выходом является объявление метода с другим именем. Как его называть решать уже вам.

Только называйте осмысленно, а не createQuery1 и createQuery2

Answer 2

Если принципиально использовать именно одноименную функцию, то могу предложить использовать Аргументы переменной длины. Так как версия PHP строго не определена, реализация будет отличаться. Проще всего вам будет обратится к документации PHP для получения дополнительной информации.

В заключении хочется добавить, что это не самая лучшая идея.

Answer 3

А почему Вы останавливаетесь на середине унификации? соберите все массивы в один двумерный (первая "строка" - имена полей, остальные - значения), и передавайте в функцию имя таблицы и этот массив. А список полей для вставки и блоки значений при формировании текста запроса собирайте implode-ом строки.

READ ALSO
Куда пишет обработчик RegisterModuleDependences?

Куда пишет обработчик RegisterModuleDependences?

В битриксе есть обработчик, который я хочу использовать для сбора отчетов:

425
Наложение кликов

Наложение кликов

Есть два блокаНеобходимо, чтобы при клике на блок №2 не срабатывало действие клика по блоку №1

350
Указание User Agent в скриптах Google Docs

Указание User Agent в скриптах Google Docs

Пытаюсь вытащить данные с сайта, используя скрипты Google DocsЦель: заполнение таблицы

403