За последние 24 часа нас посетили 16788 программистов и 1646 роботов. Сейчас ищет 891 программист ...

Вставка символа в строку

Тема в разделе "PHP для новичков", создана пользователем VLK, 13 фев 2014.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    В языке C# можно писать так:

    Код (Text):
    1. string name = "Donald";
    2. string time = "day";
    3. Console.WriteLine("Hello {0} good {1}", name, time);
    В итоге {0} заменится на name, т.е. на "Donald", а {1} на "day" и результат будет "Hello Donald good day", есть ли что то подобное в языке PHP?

    еще вопрос во встроенных функция есть такая штука, короче сколько угодно параметров можно вставить, например в
    Код (Text):
    1. isset($one, $two, $three, ........);
    для чего мне все это нужно, хочу сделать функцию, функция будет соединятся с БД, отправлять запрос и возвращать результат

    примерно это как то так будет выглядеть

    первый параметр это запрос в виде "SELECT * FROM auth WHERE {0}='{1}' AND {2}='{3}'"
    Второй параметр это как раз набор переменных, которые будут подставляться за место {0}, {1}, {2}, {3}

    примерно как то так.
     
  2. iolon

    iolon Активный пользователь

    С нами с:
    13 фев 2014
    Сообщения:
    3
    Симпатии:
    0
    Интересно, а такой вариант подойдет?

    Код (Text):
    1.  
    2. $param1 = "id";
    3. $value1 = 100;
    4. $param1 = "cost";
    5. $value1 = 125;
    6. $result = "SELECT * FROM auth WHERE {$param1}='{$value1}' AND {$param2}='{$value2}'";
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    не, я от сюда срисовал - http://www.youtube.com/watch?v=TB0XhsWpY-M

    но за ответ спасибо.
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    sprintf()
    PDO
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это как бы основы основ же ж
    Код (PHP):
    1. $result = "SELECT * FROM auth WHERE `$param1`='$value1' AND `$param2`='$value2'";
    Добавлено спустя 44 секунды:
    там совсем не то что вы думаете
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    хм.. странно, как не то:

    Код (Text):
    1. // записываем в массив $args все полученные функцией параметры
    2. $args = func_get_args();
    3.  
    4. // вытаскиваю первый аргумент, это у нас будет запроса, для замены '?' на '%s'
    5. $query = array_shift($args);
    6.  
    7. //меняем '?' на '%s'
    8. $query = str_replace('?', '%s', $query);
    9.  
    10. // потом экранируем все параметры кроме $query
    11. // ...
    12.  
    13. // засовываем $query обратно
    14. array_unshift($args,$query);
    15.  
    16. // после чего меняем все '%s' на конкретные значения
    17. $query = call_user_func_array('sprintf',$args);
    18.  
    19. // ну а дальше выполняем запрос
    20. // ...
    где тут не так происходит как, как описано? (я проверял, работает, запрос нормально составляется, экранируется)

    единственно мутное место это:
    Код (Text):
    1. $query = call_user_func_array('sprintf',$args);
    не получается тут обойтись без этой call_user_func_array


    и еще вопрос, вообще в оригинале так написано:
    Код (Text):
    1. $query = str_replace(array('%','?'), array('%%','%s'), $query);
    зачем менять '%' на '%%'?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Чтоб я знал. Там экранируется, а вы спрашивали о совмещении строк.