Рубиновые массивы:% w против% W

Я бы расширил Core PDO Class и d так:

class Database extends PDO
{
    public function QueryFromPost($Query,$items)
    {
        $params = array();
        $Query .= ' WHERE ';

        foreach($items as $key => $default)
        {
             $Query .= ' :' . $key. ' = ' . $key;
             if(isset($_POST[$key]))
             {
                  $params[':' . $key] = $_POST[$key];
             }else
             {
                 $params[':' . $key] = $default;
             }
        }
        $s = $this->prepare($Query);
        return $s->execute($params);
    }
}

Затем используйте так:

$db = new Database(/*..Default PDO Params*/);
$statement = $db->QueryFromPost('SELECT * FROM employees',array('type' => 'plc'));
foreach($preparedStatement->fetchAll() as $row)
{
    //...
}

Но поскольку уже сказано, что вы должны быть ОЧЕНЬ усталый от того, что вы пытаетесь сделать, вам нужно проверить ваши данные, его дезинфицировать, но вы не подтвердили.

147
задан Allyn 27 March 2009 в 17:47
поделиться

2 ответа

%w заключает в кавычки как одинарные кавычки '' (никакая интерполяция переменной, меньше escape-последовательностей), в то время как %W заключает в кавычки как двойные кавычки "".

irb(main):001:0> foo="hello"
=> "hello"
irb(main):002:0> %W(foo bar baz #{foo})
=> ["foo", "bar", "baz", "hello"]
irb(main):003:0> %w(foo bar baz #{foo})
=> ["foo", "bar", "baz", "\#{foo}"]
228
ответ дан 23 November 2019 в 22:25
поделиться

%W выполняет нормальные замены двойной кавычки. %w не делает.

21
ответ дан 23 November 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: