我正在尝试创建一个代码来搜索多列中的数据,只有在一列中搜索时,代码才有效。当我尝试在两列中搜索时,它表示在数据库中找不到任何内容。
<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%'";
答案 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
。