我正在使用PDO连接我的MySQL数据库
所以在我的用户列表之前我做过:
现在我只是调用一个对象UserCollection,加载它并预先输出。
$list = new UserCollection( $connect );
$list->load();
像那样。在load()中是现在的标准查询:
$stmt = $this->_pdo->query( 'SELECT id FROM users' );
$data = $stmt->fetchAll( PDO::FETCH_ASSOC );
Theres没有任何有限的变量,所以它没有准备好。
工作正常,它只抓住所有用户。
现在我想要做的是传递已经构建到UserCollection()的查询并将其用于在查询中加载()。
如果查询没有限制变量,我可以很容易地做到这一点,比如上面的查询。
如果我想传递这样的变量,我该怎么办:
SELECT firstname, lastname, id, sex, last_access, bostadsort FROM users WHERE sex=:sex
然后我需要绑定:性,我不能把bindValue()写成
那我该怎么办?我该怎么办?
先谢谢
答案 0 :(得分:-1)
您可以修改加载方法:
function load($params = array()){
$stmt = $this->_pdo->prepare("*your sql here*");
if (!empty($params)){
foreach ($params as $param_key=>$param_value)
$stmt ->bindParam($param_key, $param_value);
}
$data = $stmt->fetchAll( PDO::FETCH_ASSOC );
}
这样您就不必修改现有代码了。要将它与具有任意数量参数的新查询一起使用,您只需将其称为:
$sex = 'male';
$firstname = 'Richard';
$params = array(':sex'=>&$sex, ':firstname'=>&$firstname);
$list->load($parameters);
手头没有PHP,所以无法测试,但我认为这应该有用。