-1

私は現在、「PHP と MySQL の Web 開発」に取り組んでいます。データベースの作成に成功し、テーブルを作成してデータベースを使用できるようになりました。また、PHP に関するすべての章を無事に完了しました。この時点まで、PHP が機能しないという問題はありませんでした。このページの目的は、データベースから検索結果を返すことです。これは非常に簡単なことですが、何らかの理由でスクリプトからページに何も出力されていません。エラーなどはありません。タイトルが上にあるだけで空白です。誰でもこれで私を助けてもらえますか? ありがとうございました。

PHPコードは次のとおりです。

<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
// create short variable names
$searchtype=$_POST['searchtype'];
$searchterm=trim($_POST['searchterm']);

 if (!$searchtype || !$searchterm) {
 echo 'You have not entered search details.  Please go back and try again.';
 exit;
 }

 if (!get_magic_quotes_gpc()){
 $searchtype = addslashes($searchtype);
 $searchterm = addslashes($searchterm);
 }

 @ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');

 if (mysqli_connect_errno()) {
 echo 'Error: Could not connect to database.  Please try again later.';
 exit;
 }

 $query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
 $result = $db->query($query);

 $num_results = $result->num_rows;

 echo "<p>Number of books found: ".$num_results."</p>";

 for ($i=0; $i <$num_results; $i++) {
 $row = $result->fetch_assoc();
 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>";
 }

 $result->free();
 $db->close();

 ?>
 </body>
 </html>
4

3 に答える 3

1

次の行からエラーを抑制しています。

@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');

それが @ 記号の機能です。@ 記号を削除し、接続が正しく機能することを確認します。スクリプトがそこで失敗する可能性があります。

私が知る限り、それは良い習慣とは見なされません。

于 2012-08-09T22:08:14.210 に答える
0

それは私のために働いた!ホワイトページなし!ftp を含むエディタを使用すると、ファイルの保存に失敗することがあります。空のファイルを取得するよりも。その場合は、コードを保護してファイルを再度開いてください。

SQLインジェクションについては、これを試してください:

 $searchtypes = array('type1','type2');
 if (!in_array($searchtype,$searchtypes) || $searchterm=='') {
      echo 'You have not entered search details.  Please go back and try again.';
      exit;
 }
于 2012-08-09T22:08:16.287 に答える
0

投稿リクエストを送信する別の php ページを作成する必要があります。ここにサンプルがあります:

フィドルを見てください:

<html>
<head>
<title>Book-O-Rama Search </title>
</head>
<body>
<h1>Book-O-Rama Search</h1>

<form id='uploadform' method='post' enctype='multipart/form-data' action='link to your search action php page'>
<legend>Submit form</legend><br/>
<div class='form-inputs'>
    SearchType <input name='searchtype' id='searchtype'/><br>
    SearchTerm <input name='searchterm' id='searchterm'/><br>
    <input type="submit" value= "Search" />
</div>
</form>

</body>
</html>

于 2012-08-09T22:00:24.010 に答える