这是我在这里的第一篇文章。我在网站上搜索,但inforutunaly没有匹配。 无论如何,我想知道如何在类上使用命名参数。 所以pdo基本形式就像是。
$query = $bdd->prepare('SELECT * FROM table WHERE login = :login AND pww = :pww');
$query->execute(array('login' => $login, 'pww' => $pww));
我希望将它集成到一个类上,而不管参数的数量。 目前,我有这个代码
对于参数,我会使用像(这是错误的,容易受到注射)等事情。
require_once 'classes/Mysql.class.php';
$mysql = new Mysql();
$sql = 'SELECT * FROM articles WHERE id = '.$_GET['id'].' LIMIT 1';
$data = $mysql->select($sql);
谢谢。
答案 0 :(得分:0)
所以似乎我已经弄明白了,诀窍是在函数中添加一个可选参数,当你需要使用预处理语句(命名参数)时就可以使用它。 所以功能类似于
public function selectAll($reqSelect, $param = null) {
$result = parent::prepare($reqSelect);
//Check whether the parameter was passed or not
if (is_null($param)) {
$result->execute();
$resultat = $result->fetchAll();
return $resultat;
}else{
//Binding the parameters
$result->execute($param);
$resultat = $result->fetchAll();
return $resultat;
}
$result->closeCursor();
}
并且为了应用它,它就像
//First param, the SQL. Here we have named parameters, so we need them to get bind
$sql = 'SELECT * FROM articles WHERE publish = :number';
//Second param, the parameters that will get bind with the named ones
$param = array(':number' => 1);
$query = $mysql->selectAll($sql, $param);
foreach ($query as $row) {
extract($row);
echo $title . '<br />';
}
我不知道这是否被认为是最佳做法,有保障甚至是正确的。如果我错了,请随意纠正我。