ФорумПрограммированиеPHP для идиотов → Глобальные переменные

Глобальные переменные

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 21:45, спустя 50 секунд

    <?php
       
           function query ($query)
           {
               $pattern = "/\\$([a-z_]{1}[-a-z0-9_]*)/i";
               preg_match_all ($pattern, $query, $vars);
               foreach ($vars[1] as $var)
               {
                   global $$var;
               }
               echo $var1; //пусто
               echo $var2; //пусто
           }
           function query1 ($v1,$v2)
           {        
               $var1 = $v1;
               $var2 = $v2;
               $q = 'Vasem $var1 i $var2, pacani';
               query ($q);
           }
           $param = 2;
           query1 (1,$param);  

    нужно что бы не пусто
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 17 марта 2010 г. 20:54, спустя 23 часа 8 минут 33 секунды

    Реально день говнокода?
    var_dump($$var); слабо сделать? и ещё var_dump($vars);
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 21:44, спустя 50 минут 37 секунд

    И хуле?
                foreach ($vars[1] as $var)
    {
    global $$var;
    echo '$var - '.$var.'; $$var -'.$$var.'<br />';
    }

    $var - var1; $$var -
    $var - var2; $$var -
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 22:08, спустя 23 минуты 16 секунд

    SpartakuS, лучше объясни зачем тебе это нужно и что в результате ты хочешь получить. А так это реально говнокод.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 22:20, спустя 12 минут 40 секунд


    $db->query('DELETE * FROM news WHERE id = '.$id);

    Ну и выполняется правильный безопасный запрос.
    "DELETE * FROM `news` WHERE `id` = ". intval ($id) . ";"

    Ну в коде много нюансов нужно учесть, но в общем смысл понятен.
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 17 марта 2010 г. 22:22, спустя 1 минуту 13 секунд



    $db->query('DELETE * FROM news WHERE id = '.$id);

    Ну и выполняется правильный безопасный запрос.
    "DELETE * FROM `news` WHERE `id` = ". intval ($id) . ";"

    Ну в коде много нюансов нужно учесть, но в общем смысл понятен.
    Как это связано?
    Понял почему код не работает. Говорить почему или уберёте этот говнокод?
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 22:30, спустя 8 минут 51 секунду

    Как это связано?

    Тупанул немного.
    Не так
    $db->query('DELETE * FROM news WHERE id = '.$id);

    а так:
    $db->query('DELETE * FROM news WHERE id = $id');

    Написан код, который в заглавии для проверки работы. Если воткнуть $var1 и $var2 в саму программу (не в функцию, то все норм), а если вар1 и вар2 наъодятся в функции и уходят в качестве переменных, аргумента, то код нихера не работает.
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 17 марта 2010 г. 22:33, спустя 2 минуты 41 секунду


    Как это связано?

    Тупанул немного.
    Не так
    $db->query('DELETE * FROM news WHERE id = '.$id);

    а так:
    $db->query('DELETE * FROM news WHERE id = $id');

    Написан код, который в заглавии для проверки работы. Если воткнуть $var1 и $var2 в саму программу (не в функцию, то все норм), а если вар1 и вар2 наъодятся в функции и уходят в качестве переменных, аргумента, то код нихера не работает.

    Зато с базами данных работаете…
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 22:42, спустя 9 минут 21 секунду

    SpartakuS, сам себе создаешь геморой. Ты ведь все равно пишешь запрос вручную. То и парить моск не нужно: создай функцию с заменой '$var' на реальную $var, которая будет "экранироваться", "интегрится" и т.д. Ну и будет тебе счастье :) А ставить "автоматом" обратные кавычки "`" нафиг не нужно, если ты их можешь с теми же трудозатратами поставить вручную.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 23:01, спустя 18 минут 54 секунды

    Ewg777, скажите уже почему не работает.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 17 марта 2010 г. 23:06, спустя 4 минуты 30 секунд

    я вообще нифига не пойму…
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 23:08, спустя 2 минуты 33 секунды

    Givi, кавычки это мелочи жизни. Там гемор с автоматическим их расставлением, поэтому может и не буду.
    А вот как мне передать эти переменные в функцию?
    Спустя 46 сек.
    kostyl, что непонятного то? Автоматическая защита от инклюдов.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 17 марта 2010 г. 23:18, спустя 9 минут 25 секунд


    Givi, кавычки это мелочи жизни. Там гемор с автоматическим их расставлением, поэтому может и не буду.
    А вот как мне передать эти переменные в функцию?
    Спустя 46 сек.
    kostyl, что непонятного то? Автоматическая защита от инклюдов.

    может инъекций? тогда чем не нравятся плейсхолдеры?
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 17 марта 2010 г. 23:19, спустя 1 минуту 39 секунд


    $db->insert("tbl_name", $data);

    где, $data

    $data = array(
      'col1' => 'val1',
      'col2' => 'val2',
      'col3' => 'val3',
    );


    Если я правильно тебя понял
    Спустя 22 сек.
    а там уже в insert - делай что хочешь
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 17 марта 2010 г. 23:39, спустя 19 минут 49 секунд

    kostyl,
    это все дополнительный гемор. Хочу просто ввел запрос и всё.
    PS Да, оговорился. Инъекции.
    krasun, а сложные запросы?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!