PHP PDO Like是什么?如何使用它?今天我們來(lái)學(xué)習(xí)一下。
在PHP中,SQL語(yǔ)句常常需要使用like語(yǔ)句來(lái)模糊匹配數(shù)據(jù)。比如,我們的用戶可能會(huì)在搜索框中輸入一些關(guān)鍵字,我們需要查詢數(shù)據(jù)庫(kù)中所有包含這些關(guān)鍵字的記錄。這時(shí),like語(yǔ)句就非常有用了。
假設(shè)我們有一個(gè)表格如下:
CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, email varchar(50) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我們想通過(guò)name字段模糊查詢用戶。下面的代碼就是使用PDO實(shí)現(xiàn)like查詢:
try { $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $like_query = '%keyword%'; $sql = "SELECT * FROM user WHERE name LIKE ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$like_query]); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); }
需要注意的是,上面的代碼中我們使用了占位符 "?",而不是直接把關(guān)鍵字拼接到查詢語(yǔ)句中。這樣做可以避免SQL注入攻擊。
我們還可以使用多個(gè)占位符來(lái)實(shí)現(xiàn)同時(shí)查詢多個(gè)關(guān)鍵字。例如:
$like_query1 = '%keyword1%'; $like_query2 = '%keyword2%'; $sql = "SELECT * FROM user WHERE name LIKE ? OR name LIKE ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$like_query1, $like_query2]); $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
當(dāng)然,PDO Like并不僅限于字符串查詢,還可以用于日期、數(shù)字等各種類型的查詢。只需要更改相應(yīng)的占位符即可。
好了,今天的PDO Like教程就到這里了。希望對(duì)大家有所幫助。