簡體   English   中英

解析來自mysql查詢的結果

[英]parsing results from mysql query

我有一個函數,查詢mysql db的東西,即時消息得到一個空數組。 我知道搜索查詢是正確的,我不明白的是為什么我的代碼返回一個空數組。 此外,運行此代碼時我沒有錯誤。

我的代碼如下:

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錯誤(如果有)。

謝謝。

PDO有幾種處理錯誤以及查詢結果的方法。

對於錯誤,可以在PDO :: __ construct中使用這些選項,例如

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

顯然,由您替換$ dsn,$ user,$ pwd。

通過這種構造,每個PDO錯誤都將引發異常,這可能是處理錯誤的最佳方法。

就您而言,錯誤可能是您使查詢失敗。 如果使用bind to ... bind參數,則必須確保參數尚未轉義。 在這里,通過在查詢中使用like '%?%' ,PDO將注入變量並對其進行保護,查詢將失敗。 您必須將其更改為like ? 然后綁定您的參數並添加%,例如, $this->query->bindParam(1, '%'.$data.'%');

編輯:有關配置選項的更多信息: http : //php.net/manual/fr/pdo.setattribute.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM