Я бы расширил 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)
{
//...
}
Но поскольку уже сказано, что вы должны быть ОЧЕНЬ усталый от того, что вы пытаетесь сделать, вам нужно проверить ваши данные, его дезинфицировать, но вы не подтвердили.
%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}"]
%W выполняет нормальные замены двойной кавычки. %w не делает.