【问题标题】:Multiple queries in WHERE clauseWHERE 子句中的多个查询
【发布时间】:2015-03-22 13:32:00
【问题描述】:

为此苦苦挣扎..我的 sql 查询在 PHP myAdmin 中有效,但在页面上无效..

网址: http://www.copleycaravanservices.co.uk/Caravans.php?room_id=1&foreign_id=1 还有另一个查询适用于 url 的 room_id 部分

不工作的代码:

<?php
require_once('db_config.php');
mysql_select_db($dbname, $db);
$sql1 = "SELECT * FROM  `SS_hotel_booking_multi_lang` 
WHERE  `foreign_id` = " . $_GET['foreign_id'] . "
AND  `locale` = '1'
AND  `field` =  'description'
AND  `source` =  'data'";
$result1 = mysql_query($sql1, $db) or die(mysql_error());
$CaravanDesc = mysql_fetch_assoc($result1);
?>

数据库:(希望显示正确!)

id  foreign_id  model   locale  field   content              source
7365    1       pjRoom    1     name    Promenade 654          data
7366    1       pjRoom    1  description This caravan sleeps 6 data
7371    2       pjRoom    1     name    Butlins Sandhills 14   data
7372    2       pjRoom    1  description 4 Day Passes included data

【问题讨论】:

  • 在字符串值周围使用单引号:$sql1 = "SELECT * FROM `SS_hotel_booking_multi_lang` WHERE (`foreign_id` = " . $_GET['foreign_id'] . " AND `locale` = "1" AND `field` = 'description' AND `model` = 'pjRoom')";
  • 那就考虑$_GET['foreign_id']的SQL注入风险
  • 然后开始学习使用 MySQLi 或 PDO 与准备好的语句/绑定变量,而不是旧的、已弃用的 MySQL 接口
  • or die(mysql_error()) 应该会引发语法错误。学会解释它们并相应地纠正它们。 @MarkBaker 告诉你使用什么。编辑:更正,它在第 2 行做了You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'model = 'pjRoom' AND locale = '1' AND source = 'data')' `
  • 我使用 123-reg 作为主机并使用他们的标准 MySQL 接口。

标签: php sql select get where


【解决方案1】:

我认为这应该通过删除列名的引号来尝试这样做

 <?php
    require_once('db_config.php');
    mysql_select_db($dbname, $db);
    $sql1 = "SELECT * FROM  `SS_hotel_booking_multi_lang` 
    WHERE  foreign_id = " . $_GET['foreign_id'] . "
    AND  locale = '1'
    AND  field =  'description'
    AND  source =  'data'";
    $result1 = mysql_query($sql1, $db) or die(mysql_error());
    $CaravanDesc = mysql_fetch_assoc($result1);
    ?>

【讨论】:

  • 非常感谢!解决方案太简单了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2016-10-23
相关资源
最近更新 更多