[英]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.