0

我正在尝试编写一个代码来搜索多列中的数据,该代码仅在我在一列中搜索时才有效。当我尝试在两列中搜索时,它说在数据库中找不到任何内容。

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

3 回答 3

0

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

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

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

于 2013-08-05T03:35:59.567 回答
0

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

$result = "SELECT * FROM thecars WHERE CONCAT(`student_Name`, `course_name`) AS `search`LIKE '%$param%'";
于 2013-08-05T03:36:13.450 回答
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%'";

OR如果您搜索类似的结果,也可以将 where 子句中的列聚合更改为其他人建议的。

于 2013-08-05T03:37:14.013 回答