Сколько переменных можно передавать в функцию

Тема в разделе "PHP", создана пользователем askarbin, 15 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Итак суть вопроса такая:
    1.Нужно добавить в БД объект с количеством переменных 55.
    2.Добавление реализуется с помощью функций
    3.Можно ли передать в функцию все 55 переменных или лучше разбить их и добавлять объект двуми(тремя) функциями?
    P.S. Если можно ответ немного пояснить, потому что я не совсем понимаю этот вопрос.
     
  2. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Возможно нужно просто другое решение.
    А так как вы хотите, можно и передать все 55 переменных ,а можно их передавать как 1 массив а в бд хранить например сериализацию массива.
     
  3. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    В смысле другое решение? Мне на самом деле нужно просто добавить объект в БД. Реализовано все на классах, поэтому необходимо использовать либо одну функцию, либо несколько. Работа с массивами оставляет желать лучшего, поэтому вариант отпадает. Могу сделать либо одну функцию, в которую буду отдавать все 55 переменных и в ней одним запросом (или несколькими отправлять это все в бд), либо же могу использовать 2-3 функции и в них уже производить в 1-й insert, во 2-й (и 3-ей) update по ключу.
    Какой вариант предпочтительней с точки зрения времени выполнения скрипта и нагрузки на БД?
    Если есть более интересное решение, тоже буду благодарен за помощь.
     
  4. RadMax

    RadMax Писатель

    Регистр.:
    12 дек 2009
    Сообщения:
    3
    Симпатии:
    0
    Непонимаю почему? Объясните почему отказываетесь от этого варианта. На мой взгляд очень хороший и читабельный вариант. Просто передавать напрямую в функцию 55 переменных очень уж как то топорно.
     
  5. psknnn

    psknnn

    Регистр.:
    9 окт 2008
    Сообщения:
    379
    Симпатии:
    227
    если запросы не меняются то бд побарабану, нагрузка будет одинаковой.
    передавать 55 параметров можно, проблем не будет, единственная проблема это последующее редактированияе.... это не очень удобно, а в остальном можно и так
     
  6. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Я же говорю, есть некоторые проблемы со знаниями работы с массивами. Мне, например, на ум приходит такой вариант.
    PHP:
    $array = array($a$b$c, ..., $n);
    function 
    create_object($array)  {
    $_sql "INSERT INTO objects VALUES ('NULL', $array[0]$array[1], ...)";
    $_sql_query mysql_query($_sql);
    }
    Это если вкратце, будет ли работать такой вариант.
    P.S. Структура БД изменению не подлежит.
     
  7. Eihwaz

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    При такой записи очень неудобно будет пользоваться этим массивом, делайте так, примерно:
    PHP:
    $params = array(
        
    'id' => $id,
        
    'title' => $title,
        
    'image' => $image
    );
    $myclass->create_object($params);
    ///// В классе //////
    public function create_object($params) {
        return 
    $params['image'];
    }
    Т.е., вместо простого массива используйте ассоциативный, тогда из функции вы сможете обращаться к его ключам, вместо того, чтобы запоминать какой индекс что содержит ($array['image'] вместо $array[2]).
     
  8. phantom_nsd

    phantom_nsd Писатель

    Регистр.:
    16 сен 2009
    Сообщения:
    7
    Симпатии:
    1
    Такой вариант будет работать. Но мне кажется стоит сделать так
    PHP:
    $array = array($a$b$c, ..., $n);
    function 
    create_object($array)  {
    $_sql "INSERT INTO objects VALUES ('NULL'"
    foreach($array as $v){
       
    $_sql .= ", ".$v;
    }
    $_sql .= ")";
    $_sql_query mysql_query($_sql);
    }  
    тогда вам будет удобней редактировать и будет уже не важно сколько вы передает переменных в массиве, запрос с генерируется автоматически. Единственное что нужно будет проверить, так это чтобы количество вставляемых переменных соответствовало количеству столбцов в таблице objects базы данных, иначе запрос просто не выполнится.
     
    askarbin нравится это.
  9. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Согласен с вами, вариант действительно неплохой, но тогда мне придется проверять на существование каждую переменную, иначе будет несоответствие переменных и столбцов, как вы и сказали.
    Наверное остановлюсь на этом варианте.
     
  10. xammett

    xammett Создатель

    Регистр.:
    6 дек 2009
    Сообщения:
    11
    Симпатии:
    0
    к массивам обращаться будет намного проще и красивее,какой-то изврат 55 переменных:confused: .
    на-ка покури http://php.su/learnphp/datatypes/?array
     
Статус темы:
Закрыта.