【发布时间】: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' ANDlocale= '1' ANDsource= 'data')' ` -
我使用 123-reg 作为主机并使用他们的标准 MySQL 接口。