我打算用下面的代碼爲100個汽車品牌展示一些銷售數字:MySQL的正則表達式字匹配
$brand = str_replace ('-', '[- ]', $_GET['brand']);
$sql = "SELECT year, brand, number FROM `exampletable` WHERE brand REGEXP :brand ORDER BY `year` DESC";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":brand", $brand);
$stmt->execute();
if($stmt->rowCount())
{ while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<?php echo $result['year'];?>
<?php echo $result['number'];?>
<?php }} else { echo '0'; } ?>
下面這段代碼工作正常,在我的表98級的品牌,但有一個問題,下面的品牌,因爲它們包含了同一個詞:
- 「雷諾」和「馬特拉雷諾」
- 「大衆」和「大衆保時捷」
因此,「Matra Renault」的數字不僅出現在該品牌的特定網頁上,而且還出現在「雷諾」的網頁上。同樣的事情發生在「大衆汽車」,我也看到「大衆保時捷」的數字。
因此,我完全理解爲什麼我的代碼不起作用,但我沒有足夠的關於此主題的知識來尋找快速解決方案。我已經在這裏讀過較老的問題,但他們似乎沒有討論過同樣的問題。
注意:由於未來沒有其他數據會添加到我的表格中,所以專門針對上述品牌的解決方案就足夠了。
當我使用'='時,例如,我將不會有像「Land Rover」這樣的兩個詞的品牌。 – Stan
你爲什麼不呢? 「品牌」字段是否有任何修改?你試過了嗎?第二種解決方案如何? – ishegg
第一行代碼:我得到的網址中的品牌名稱是land-rover。 表中存儲的品牌名稱是路虎。因此,當我使用'='時,我沒有得到任何結果。 – Stan