【问题标题】:Creating a search form in PHP [duplicate]在 PHP 中创建一个搜索表单来搜索数据库? [复制]
【发布时间】:2012-09-26 16:37:03
【问题描述】:

我目前正在尝试完成一个项目,其中规范是使用搜索表单来搜索包装数据库。该数据库有很多变量,包括尺寸、名称、类型和肉类。我需要创建一个搜索表单,用户可以在其中使用许多不同的搜索进行搜索(例如搜索 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>

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

【问题讨论】:

  • 你没有在 php 中使用 $term = $_POST["term"]
  • 谢谢,但我仍然收到 table.liam 不存在错误:(
  • 哎哟。我对你在这里的困境表示同情,但你将很难在 Stack Overflow 上得到这个问题的好答案。原因是这不是一个真正的问题。这是一大堆问题。要获得 Stack Overflow 最擅长提供的良好、有用的帮助,您需要将问题分解为离散的部分(例如,“为什么我得到表不存在错误?”)并提出这些问题。
  • 非常感谢您的建议。抱歉,只在 stackflow 上阅读或使用过答案,从未真正提出过问题。我会记住它的未来。谢谢。
  • 通常,当您打算在服务器端“写入”数据(INSERT/UPDATE/DELETE)时,应使用$_POST。当您只想在服务器端“读取”数据(选择/搜索)时,您应该使用$_GET。 (当然,我的意思是你也应该调整method 的形式以适应这个建议)

标签: php html mysql sql database


【解决方案1】:

试试这个,让我知道会发生什么。

表格:

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

【讨论】:

  • 感谢您的帮助!但是当我提交搜索时我仍然得到这个,“表'db_test.liam'不存在”:(
  • 试试我的新编辑。记住 DB、Tables 和 Column 名称是区分大小写的。
  • 我现在收到此错误“警告:mysql_fetch_array() 期望参数 1 是资源,在第 24 行的 /Applications/XAMPP/xamppfiles/htdocs/form.php 中给出的布尔值”
  • 这是一个为什么这是一个坏问题的例子:很难说出一个好的答案是什么。 @rackemup420 解决了一个问题,但发现了另一个问题。这是一个老鼠窝。分解它。
  • var_dump($sql);并查看 $term 是否正在获取任何信息集。
【解决方案2】:

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

【讨论】:

  • 谢谢,我之前查看时已经意识到这一点,但没有任何改变。
  • 那么也许该表真的不存在!检查 phpMyAdmin 我看到你正在使用 XAMPP
猜你喜欢
  • 1970-01-01
  • 2012-09-07
  • 2017-05-21
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多