【问题标题】:Display Data From MYSQL; SQL statement error显示来自 MYSQL 的数据; SQL语句错误
【发布时间】:2012-05-06 19:00:12
【问题描述】:

我有一个表格..想要显示 mysql 表中的数据..问题是 SQL 查询语句没有显示数据..有什么想法吗?我认为错误可能是由于 SQL 查询行中的 AND 语句造成的?

  <form method="get" action="submit.php">

   Number of Bedrooms: <select name="bedrooms">
   <option selected value='#'>--Choose Number of Bedrooms--</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   </select>


   Number of Occupants:  <select name="sleeps_min">
   <option selected value='#'>--Choose Number of Bedrooms--</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   <option value="6">6</option>
   <option value="7">7</option>
   <option value="8">8</option>
   <option value="9">9</option>  
   <option value="10">10</option>
   </select>

   Availability:  <select name="availability">
   <option selected value='#'>--Select Availability Period--</option>
   <option value="All year round">All Year Round</option>
   <option value="New Year Availability Only">New Year</option>

   </select>
   <input type="submit" value="submit" />
    </form>

--

 require 'defaults.php';
 require 'database.php';

 /* get properties from database */

 $property = $_GET['bedrooms'] ;
 $sleeps_min = $_GET['sleeps_min'] ;
 $availability = $_GET['availability'] ;


  $query = "SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min = '{$sleeps_min}' AND availability = '{$availability}'";
  $row=mysql_query($query);

  $result = do_query("SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min = '{$sleeps_min}' AND availability = '{$availability}'", $db_connection);

 while ($row = mysql_fetch_assoc($result))
 {
$r[] = $row;
 }

 ?>

【问题讨论】:

标签: php mysql sql database


【解决方案1】:

您在 where 子句中缺少逻辑运算符(例如 AND):

$query = "SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min =
                                                                   ^----here

而且您的查询容易受到 SQL 注入攻击。至少你应该通过 mysql_real_escape_string 传递你的 $_GET 变量

如果您的代码中有简单的错误处理,您就会看到语法错误:

$result = mysql_query($query) or die(mysql_error());
                             ^^^^^^^^^^^^^^^^^^^^^^

绝不假设查询成功。即使 SQL 语法本身是完美的(你的不是),也可能有其他原因导致查询失败而不检查失败。

【讨论】:

  • 干得好!您是否知道在提交表单后未满足数据库条件时显示“未找到记录”之类的文本的方法..例如,没有 6 间卧室的住宿且可容纳 10 人,因此会出现错误消息?
  • @Dave if (mysql_num_rows($result) == 0) { // show no records found message }
  • 我应该在哪里插入呢?对不起,我很痛苦!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
相关资源
最近更新 更多