2015-12-09 24 views
0

以及我在我的網站(汽車網站)搜索輸入,即時通訊使用該搜索輸入來搜索他們的品牌只有汽車...可以說奧迪,寶馬等。 ..我想知道是否有一種方式,我可以鍵入像:只有在1輸入多列搜索輸入

奧迪R8,而不是什麼都沒有顯示,它會顯示該車,如 SELECT品牌,模型從汽車WHERE品牌= firstspace,型號=秒空間...

類似的東西,而不是創建兩個輸入...所以我只能在輸入內輸入全名奧迪R8 Spyder或只是奧迪R8,它將只顯示R8型號...

謝謝,

+0

你可以使用LIKE。 – momouu

+0

是的,但即時通訊使用此:「選擇*從automoviles WHERE像'$ marca'或模式像'$ marca'或版本像'$ marca'LIMIT $偏移,$限制」;但如果我輸入奧迪R8(它將不會返回任何內容),甚至不包括奧迪R8車型:p但如果我只輸入audi,它將返回車... –

+0

在您的變量前後添加%。 「SELECT * FROM automoviles WHERE像'%$ marca%'或modelo像'%$ marca%'或版本像'%$ marca%'LIMIT $ offset,$ limit」; – momouu

回答

1

使用此:

<?php   
     $input = 'Audi R8'; 
     $arr = explode(' ', $input); //to separate the input 
     $sql = "SELECT * FROM automoviles WHERE marca like '%$arr[0]%' or modelo like '%$arr[1]%'";   
?> 

編輯1與逃逸

<?php 
     $input = 'Audi R8'; 
     $arr = explode(' ', $input); 
     $input1 = mysqli_real_escape_string($conn, $arr[0]); 
     $input2 = mysqli_real_escape_string($conn, $arr[1]); 

     $sql = "SELECT * FROM automoviles WHERE marca like '%$input1%' or modelo like '%$input2%'"; 
?> 
+0

也需要在發送到db之前轉義數據,以防止sql注入攻擊 – BI2O2T

+0

我已編輯我的代碼 – momouu

+0

謝謝monace,完美的作品= D –

0

嗨嘗試使用PHP的爆炸功能,這樣你就會得到兩個變量。

<?php 
$dcs_str = "audi m8"; 
$dcs_arr = explode(" ",$dcs_str); ?> 
+0

當我得到那些2個變量,我如何分別使用它們?像marca = variable1或model = variable2? –

+0

使用foreach循環來使用這些變量。 –

0

您可以將該輸入分爲兩部分。例如像這樣:

var input = "Audi R8"; 
var space = input.indexOf(" "); 
var firstspace = input.substring(0, space); // Audi 
var secondspace = input.substring(space); // R8 

所以,你的SQL會是這樣的:

SELECT brand, model FROM cars WHERE brand = firstspace, model=secondspace