PHP PDO bindParam()返回TRUE,execute()返回FALSE。数据存在于数据库中

时间:2011-10-28 19:09:57

标签: php mysql pdo bind execute

我正在尝试在我的数据库类中构建一个方法来使用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没有选择数据库”。 我知道我正在尝试连接的数据库存在,我相信它正在传递给连接:可能出现什么问题?

谢谢!

0 个答案:

没有答案