php在多列mysql中搜索

时间:2013-08-05 03:33:15

标签: php mysql search

我正在尝试创建一个代码来搜索多列中的数据,只有在一列中搜索时,代码才有效。当我尝试在两列中搜索时,它表示在数据库中找不到任何内容。

<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%'";

3 个答案:

答案 0 :(得分:0)

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

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

此外,这对SQL注入非常开放。在将输入传递给查询之前清理输入。

答案 1 :(得分:0)

你可以通过它进行连续搜索。

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

答案 2 :(得分: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