我的網站上的搜索模塊出現問題。我使用此代碼:我的網站上的搜索模塊出現問題
if(!isset($_POST['search'])) {
$query = "SELECT id, title FROM cars ORDER BY id LIMIT ? OFFSET ?";
}
if(isset($_POST['search']) && $_POST['categories'] != "all") {
$query = "SELECT id, title FROM cars WHERE title LIKE CONCAT(?, '%') ESCAPE '+' AND category = ? ORDER BY id LIMIT ? OFFSET ?";
}
if(isset($_POST['search']) && $_POST['categories'] == "all") {
$query = "SELECT id, title FROM cars WHERE title LIKE CONCAT(?, '%') ESCAPE '+' ORDER BY id LIMIT ? OFFSET ?";
}
try {
$stmt = $db->prepare($query);
if(!isset($_POST['search'])) {
$stmt->bindValue(1, (int) $limit, PDO::PARAM_INT);
$stmt->bindValue(2, (int) $offset, PDO::PARAM_INT);
}
if(isset($_POST['search']) && $_POST['categories'] != "all") {
$search= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $_POST['search']);
$stmt->bindValue(1, $search, PDO::PARAM_STR);
$stmt->bindValue(2, (int) $_POST['categories'], PDO::PARAM_INT);
$stmt->bindValue(3, (int) $limit, PDO::PARAM_INT);
$stmt->bindValue(4, (int) $offset, PDO::PARAM_INT);
}
if(isset($_POST['search']) && $_POST['categories'] == "all") {
$search= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $_POST['search']);
$stmt->bindValue(1, $search, PDO::PARAM_STR);
$stmt->bindValue(2, (int) $limit, PDO::PARAM_INT);
$stmt->bindValue(3, (int) $offset, PDO::PARAM_INT);
}
$stmt->execute();
}
catch(PDOException $ex) {
die("Failed to run query: " . $ex->getMessage());
}
$cars = $stmt->fetchAll();
我的搜索形式如下:
<input name="search" type="text" size="20" maxlength="20" />
<select name="categories">
<option value="all">All Categories</option>
<option value="1">Free</option>
<option value="2">In use</option>
<option value="3">Damaged</option>
</select>
在車表,每個標題是這樣的:2009款保時捷911(年品牌型號) 當我搜索,如果我沒有填寫搜索框,它可以正常工作,即使我搜索2009年,它也可以正常工作,但如果搜索保時捷,我不會得到任何結果。這是爲什麼?我的代碼有什麼問題?
注意,簡寫'限制?偏移?'會是'極限?,?'。我更喜歡它,但個人喜好:) – webnoob 2013-03-09 18:02:50
我會看str_replace代碼。也許你可以var_dump它的結果並得到一個線索。從<選擇name = 「類別」> – Ateszki 2013-03-09 18:10:38