2013-08-05 71 views
0

我正在试图编写代码来搜索多个列中的数据,只有当我在一列中搜索时,代码才有效。当我试图在两列中搜索时,它说没有在数据库中找到任何东西。php在多个列中搜索mysql

<form action="" method="post"> 
<input type="text" name="param" > 
<input type="submit" name="submit" value="search"> 
</form> 

if (isset($_POST['param'])) { 
$param= trim ($_POST['param']); 

$result = "SELECT * FROM table WHERE student_Name LIKE '%$param%' AND course_name LIKE '%$param%'"; 
+1

我想你想尝试'OR'而不是'AND'。 – vee

回答

0

我认为你应该使用OR,除非你想用相同的参数检查2列。

$result = "SELECT * FROM thecars WHERE student_Name LIKE '%$param%' OR course_name LIKE '%$param%'";

此外,这是SQL注入非常开放。在将其传递给查询之前对输入进行消毒。

0

你可以做一个concat并通过它进行搜索。

$result = "SELECT * FROM thecars WHERE CONCAT(`student_Name`, `course_name`) AS `search`LIKE '%$param%'"; 
+0

我没有测试过这种方式! –

0

您使用相同的$param变量来在两列上进行搜索。如果您搜索2个单独的值提供支持输入2个值的表单。然后在你的查询结构中正确处理这种输入。

<form action="" method="post"> 
<input type="text" name="param1" > 
<input type="text" name="param2" > 
<input type="submit" name="submit" value="search"> 
</form> 

if (isset($_POST['param1']) || isset($_POST['param2'])) { 
$param1 = trim ($_POST['param1']); 
$param2 = trim ($_POST['param2']); 

$result = "SELECT * FROM thecars WHERE student_Name LIKE '%$param1%' AND course_name LIKE '%$param2%'"; 

而且改变where子句中你的专​​栏聚集到OR如果你的搜索类似的结果,通过他人推荐。