2015-12-09 23 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