解析mysql查询的结果

时间:2016-03-14 11:17:23

标签: php mysql pdo

我有一个函数,它查询mysql数据库的某些内容,并获得一个空数组。我知道搜索查询是正确的,我不明白的是为什么我的代码返回一个空数组。在运行此代码时,我没有错误。

我的代码如下:

public $results;

public function __construct () {
    require_once'app/model/DB_Con.php';
$this->db = new connection();
$this->db = $this->db->dbConnection();
}

public function _search ($data) {
    $this->query = $this->db->prepare("SELECT * FROM students WHERE name LIKE '%?%'");
    $this->query->bindParam(1, $data);
    $this->query->execute();
    $this->results = $this->query->fetchAll();
    print_r($this->results);
    echo $data;
}

有没有办法对PHP PDO进行故障排除,因为我没有看到mysql错误(如果有的话)。

感谢。

1 个答案:

答案 0 :(得分:2)

PDO有几种处理错误的方法,以及查询结果。

对于错误,您可以将选项用于PDO :: __结构,例如

new PDO($dsn, $user, $pwd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
显然,

取代你的$ dsn,$ user,$ pwd。

使用这样的构造,每个PDO错误都会抛出异常,这可能是处理错误的最佳方法。

在您的情况下,错误可能是您查询失败。如果使用bind to ... bind paramters,则必须确保参数尚未转义。在这里,通过在查询中使用like '%?%',PDO将注入变量并保护它,并且您的查询将失败。 您必须为like ?更改它,然后绑定您添加%的参数,例如$this->query->bindParam(1, '%'.$data.'%');

编辑:有关配置选项的更多信息:http://php.net/manual/fr/pdo.setattribute.php