0

私は教科書からいくつかのphp-mysqlチュートリアルに従っています。「本」データベースからいくつかのデータを取得できるはずです。たとえば、著者名がデータベースにあるため、検索タイプとして著者を選択し、検索語としてマイケルを選択すると、いくつかの結果が得られるはずです。しかし、フォームからデータを送信した後、結果が得られません。次のように表示されます。

Search Results 

Number of books found:

以下は、フォームの私のhtmlコードです:

<html>
  <head>
    <title> Catalog Search</title>
  </head>
  <body>
    <h1>Catalog Search</h1>
    <form action="results.php" method="post">
      Choose Search Type:<br />
      <select name="searchtype">
        <option value="author">Author</option>
        <option value="title">Title</option>
        <option value="isbn">ISBN</option>
      </select>
      <br />
      Enter Search Term:<br />
      <input name="searchterm" type="text">
      <br />
      <input type="submit" value="Search">
    </form>
  </body>
</html>

books という名前のデータベースと、results.php という名前の php スクリプトがあります。

<html>
  <head>
    <title>Search Results</title>
  </head>
  <body>
    <h1>Search Results</h1>
    <?php
      // create short variable names
      $searchtype=$_POST["searchtype"];
      $searchterm=$_POST["searchterm"];
      if (!$searchtype || !$searchterm)
      {
        echo 'You have not entered search details.
         Please go back and try again.';
        exit;
      }

      $searchterm= trim($searchterm);
      $searchtype = addslashes($searchtype);
      $searchterm = addslashes($searchterm);

      // Create connection
      $con=mysqli_connect("localhost","myusername","mypassword","books");

      // Check connection
      if (mysqli_connect_errno($con))
      {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

      $query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
      $result = mysql_query($query);
      $num_results = mysql_num_rows($result);
      echo '<p>Number of books found: '.$num_results.'</p>';
      for ($i=0; $i <$num_results; $i++)
      {
        $row = mysql_fetch_array($result);
        echo '<p><strong>'.($i+1).'. Title: ';
        echo htmlspecialchars(stripslashes($row['title']));
        echo '</strong><br />Author: ';
        echo stripslashes($row['author']);
        echo '<br />ISBN: ';
        echo stripslashes($row['isbn']);
        echo '<br />Price: ';
        echo stripslashes($row['price']);
        echo '</p>';
      }
    ?>
  </body>
</html>

コードの何が問題になっていますか? 前もって感謝します。

4

1 に答える 1

1

接続はmysqli拡張機能を使用するため、クエリでは拡張機能ではなくそれも使用する必要がありますmysql_*

$result = mysql_query($query); // Wrong extension. Use mysqli

する必要があります

$result = mysqli_query($con,$query);

その後、すべての後続のデータベース関数は を使用するmysqli_*必要があり、2 つを混在させることはできません。

補足:の代わりにmysqli_real_escape_stringaddslashesを使用してください。

于 2013-11-10T15:39:26.443 に答える