我正在尝试在我的数据库类中构建一个方法来使用PDO执行选择查询,我很陌生。
我想将select查询和数组作为参数传递给要绑定的值。
查询通过preg_match_all()
传递并提取所有参数。
然后对参数/值对进行循环和绑定。
关注execute()
。
bindParam()
返回true
,但execute()
返回false
...我确定数据库中有两行应该找到。
从上一页传递的数据是:
方法是(我离开了我用于调试的var_dump()
,它们给出了真和假):
public function selectQuery($select_query, $params) {
try {
//prepare query
$stmt = $this - > dbh - > prepare($select_query);
//get the parameters to bind
preg_match_all('/:+(\w)*/', $select_query, $to_bind);
//do the binding
$i = count($params);
while ($i > 0) {
$i--;
$str_to_bind = (string) $to_bind[0][$i];
$str_param = (string) $params[$i];
$str_param = '1';
var_dump($stmt - > bindParam($str_to_bind, $str_param));
}
//execute
var_dump($stmt - > execute());
}
catch (PDOException $e) {
echo 'Select query failed: '.$e - > getMessage();
}
}
脚本正在传递这些值:
$select_query = "SELECT col1,col3 FROM test_table WHERE col2= :column";
$params[] = '1';
$dbh->selectQuery($select_query, $params);
......我想我的问题是:我做错了什么?
非常感谢!
编辑: 按照Nev Stokes的建议,我发现当我尝试执行查询时会抛出一个异常,说“选择查询失败:SQLSTATE [3D000]:无效的目录名称:1046没有选择数据库”。 我知道我正在尝试连接的数据库存在,我相信它正在传递给连接:可能出现什么问题?
谢谢!