在PHP中创建搜索表单以搜索数据库?

时间:2012-10-05 13:46:32

标签: php html mysql sql database

我目前正在尝试完成一个项目,其中规范是使用搜索表单来搜索打包数据库。数据库有很多变量,范围从大小,名称,类型和肉类。我需要创建一个搜索表单,用户可以使用多种不同的搜索进行搜索(例如搜索50厘米长的盖子托盘)。

我花了一整天时间尝试创建一些可以在我创建的测试数据库中搜索信息的PHP代码。我有大量的错误,包括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>

如果有人有任何见解或可以帮助我,我将非常感激!提前谢谢。

3 个答案:

答案 0 :(得分:11)

尝试一下让我知道会发生什么。

形式:

<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>

答案 1 :(得分:3)

您收到错误'表liam不存在',因为该表的名称为Liam,与liam不同。 MySQL表名称区分大小写。

答案 2 :(得分:0)

您确定,指定的数据库和表存在吗?您是否尝试使用任何数据库客户端查看数据库?例如,与MySQL服务器捆绑在一起的命令行MySQL客户端。或者,如果您是开发人员新手,那么有许多GUI和Web界面客户端(HeidiSQL,MySQL Workbench,phpMyAdmin等等)。因此,首先检查一下,如果您的表创建脚本成功并创建了它所拥有的内容。

BTW为什么你有一个用于创建数据库结构的脚本?它通常是一个非重复的操作,因此编写脚本来执行此操作是不必要的。它仅在需要动态重复创建和操作数据库结构时才有用。