web-dev-qa-db-ja.com

PHPで検索フォームを作成してデータベースを検索しますか?

現在、仕様で検索フォームを使用してパッケージングデータベースを検索するプロジェクトを完了しようとしています。データベースには、サイズ、名前、タイプ、肉など、さまざまな変数があります。ユーザーがさまざまな検索(長さ50 cmのふたトレイを検索するなど)を使用して検索できる検索フォームを作成する必要があります。

私は、作成したテストデータベース内の情報を検索できるPHPコードを作成しようと1日中費やしました。 mysql_fetch_arrayエラーからブールエラーに至るまで、非常に多くのエラーがありましたが、現在、私の最新のエラーは、テーブルが存在しないように見えることです。データを入力できますが(データを入力できるHTMLおよびphpページ)、何が原因であるかわかりません。

誰かが私に現在やらなければならないことのアイデアやヒントを教えてもらえますか?ここに、実際のサイトのSQLデータベースに移動する直前の小さなテストを示します。

データベースの作成:

 <body>
  <?php
     $con = mysql_connect("localhost", "root", "");
      if (!$con)
     {
      die('Could not connect: ' . mysql_error());
     }
      if (mysql_query("CREATE DATABASE db_test", $con))
     {
  echo "Database created";
     }
      else
    {
  echo "Error creating database: " . mysql_error();
    }


  mysql_select_db("db_test", $con);
  $sql = "CREATE TABLE Liam
   ( 
  Code varchar (30),
  Description varchar (30),
  Category varchar (30),
  CutSize varchar (30),
   )";

 mysql_query($sql, $con);
     mysql_close($con);
 ?> 
   </body>

HTML検索フォームページ:

<body>

      <form action="form.php" method="post">
        Search: <input type="text" name="term" /><br />
      <input type="submit" name="submit" value="Submit" />
      </form>

</body>

データベースから情報を収集しようとするために使用しているPHPコード(これを何度か書き換えましたが、このコードは「table.liamが存在しません」と表示します)

  <body>
   <?php
 $con = mysql_connect ("localhost", "root", "");
 mysql_select_db ("db_test", $con);

  if (!$con)
    { 
    die ("Could not connect: " . mysql_error());
    } 
    $sql = mysql_query("SELECT * FROM Liam WHERE Description LIKE '%term%'") or die
        (mysql_error());

       while ($row = mysql_fetch_array($sql)){
    echo 'Primary key: ' .$row['PRIMARYKEY'];
    echo '<br /> Code: ' .$row['Code'];
    echo '<br /> Description: '.$row['Description'];
    echo '<br /> Category: '.$row['Category'];
    echo '<br /> Cut Size: '.$row['CutSize']; 
  }

  mysql_close($con)
   ?>
     </body>

誰かが洞察を持っているか、これで私を助けることができれば、私は非常に感謝します!前もって感謝します。

10
LiamHorizon

これを試してみて、何が起こるか教えてください。

形:

<form action="form.php" method="post"> 
Search: <input type="text" name="term" /><br /> 
<input type="submit" value="Submit" /> 
</form> 

Form.php:

$term = mysql_real_escape_string($_REQUEST['term']);    

$sql = "SELECT * FROM liam WHERE Description LIKE '%".$term."%'";
$r_query = mysql_query($sql);

while ($row = mysql_fetch_array($r_query)){ 
echo 'Primary key: ' .$row['PRIMARYKEY']; 
echo '<br /> Code: ' .$row['Code']; 
echo '<br /> Description: '.$row['Description']; 
echo '<br /> Category: '.$row['Category']; 
echo '<br /> Cut Size: '.$row['CutSize'];  
} 

編集:もう少しクリーンアップしました。

Final Cut(私のテストファイル):

<?php
$db_hostname = 'localhost';
$db_username = 'demo';
$db_password = 'demo';
$db_database = 'demo';

// Database Connection String
$con = mysql_connect($db_hostname,$db_username,$db_password);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db($db_database, $con);
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
<form action="" method="post">  
Search: <input type="text" name="term" /><br />  
<input type="submit" value="Submit" />  
</form>  
<?php
if (!empty($_REQUEST['term'])) {

$term = mysql_real_escape_string($_REQUEST['term']);     

$sql = "SELECT * FROM liam WHERE Description LIKE '%".$term."%'"; 
$r_query = mysql_query($sql); 

while ($row = mysql_fetch_array($r_query)){  
echo 'Primary key: ' .$row['PRIMARYKEY'];  
echo '<br /> Code: ' .$row['Code'];  
echo '<br /> Description: '.$row['Description'];  
echo '<br /> Category: '.$row['Category'];  
echo '<br /> Cut Size: '.$row['CutSize'];   
}  

}
?>
    </body>
</html>
11
rackemup420

テーブルの名前がLiamとは異なるliamであるため、 'table liam does not exist'というエラーが発生します。 MySQLテーブル名では大文字と小文字が区別されます。

3
pjmorse

指定したデータベースとテーブルが存在しますか?データベースクライアントを使用してデータベースを調べようとしましたか?たとえば、MySQLサーバーにバンドルされているコマンドラインMySQLクライアント。または、開発初心者の場合、GUIおよびWebインターフェースクライアント(HeidiSQL、MySQL Workbench、phpMyAdminなど)が多数あります。テーブル作成スクリプトが成功し、必要なものを作成したかどうかを最初に確認してください。

ところで、なぜデータベース構造を作成するためのスクリプトがあるのですか?通常は非繰り返しの操作なので、これを行うためのスクリプトを作成する必要はありません。データベース構造をその場で繰り返し作成および操作する必要がある場合にのみ役立ちます。