0

複数の列でデータを検索するコードを作成しようとしていますが、コードは 1 つの列で検索する場合にのみ機能します。2 つの列で検索しようとすると、データベースに何も見つからないと表示されます。

<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

連結を実行して、それを介して検索できます。

$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 に答える