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

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

  • VaseninM

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

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

    <?php
       
           function query ($query)
           {
               $pattern = &quot;/\\$([a-z_]{1}[-a-z0-9_]*)/i&quot;;
               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 = &#39;Vasem $var1 i $var2, pacani&#39;;
               query ($q);
           }
           $param = 2;
           query1 (1,$param);  

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


    $db->insert(&quot;tbl_name&quot;, $data);

    где, $data

    $data = array(
      &#39;col1&#39; => &#39;val1&#39;,
      &#39;col2&#39; => &#39;val2&#39;,
      &#39;col3&#39; => &#39;val3&#39;,
    );


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

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

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

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

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