0
    <?php include "connect.php"; ?> <br /> <br />

<form action="" method="get">
    Search: <input type="text" name="search">
    <input type="submit">
</form>

<?php
    $get = mysqli_query($connect,"SELECT * FROM $table WHERE NAME = echo $_GET['search']");

    while($row = mysqli_fetch_array($get)) {
        echo $row['NAME']." ".$row['INFO'];
    }
?>

私がやろうとしているのは、ユーザーが検索バーに名前を入力して送信すると、データベースを検索したいということです...すべてを試したので、これを行う方法を教えてください。

4

2 に答える 2

3

試す

$get = mysqli_query($connect,"SELECT * FROM TableName WHERE Name LIKE '%" . $_GET['search'] . "%'");

しかし!!!!

SQLインジェクションに注意

この方法を使用することをお勧めします。

$mysqli = new mysqli(<ServerAddress>,<DatabaseName>,<Password>,<UserName>)
$stmt = $mysqli->prepare("SELECT col1, col2, col3 FROM TableName WHERE Name LIKE") or die($mysqli->error);
$stmt->bind_params('s', "%" . $_GET['search'] . "%");
$stmt->execute() or die ($mysqli->error);
$stmt->bind_result($Col1, $Col2, $Col3);
while($stmt->fetch()):
    ...
endwhile;

ここのコードには明らかにもっと多くのことがありますが、最終的にはより安全です。また、これにより列が PHP 変数にバインドされ、列を自由に使用できるようになります。

于 2013-10-13T02:06:13.207 に答える
0

$_GET を使用している場合は、クエリの途中で「echo」を使用する代わりに、$_GET['search'] を変数に等しく設定する必要があります。ただし、安全性が低いため、$_GET を使用して URL 経由で検索を渡すことはしません。フォームメソッドを「post:」に変更してみてください

<form action="search.php" method="post">
  <label for="name">Search</label>
  <input type="text" name="name">
  <input type="submit">
</form>

そして、バックエンドの「search.php」ファイルは次のようになります。

<?php
    $name = mysql_real_escape_string(strtolower($_POST['name']));

    $query = "SELECT * FROM $table WHERE name LIKE '%$name%'";
    $run = mysql_query($query);
    $result = mysql_fetch_array($run);

    foreach($item as $result){
      //echo the results how you will 
    }
?>
于 2013-10-13T02:29:58.347 に答える