由于语法错误,MySQL查询不起作用

时间:2015-04-30 15:05:24

标签: php mysql

此字符串有效:

$sql = 'SELECT * FROM Bar_Info WHERE b_id=' .
    $db->real_escape_string($_GET['b_id']);

但是,这个没有:

$sql = 'SELECT * FROM Bar_Info WHERE BarLink=' .
    $db->real_escape_string($_GET["BarLink"]);

b_id是变量,BarLink是条的名称,其中一些包括连字符。一个例子是:granite-city

有没有理由第二个代码示例不起作用?

2 个答案:

答案 0 :(得分:1)

您需要引用SQL参数:

$sql = 'SELECT * FROM Bar_Info WHERE BarLink=\'' . $db->real_escape_string($_GET["BarLink"]).'\'';

第一个查询可能有效,因为您只使用数字,但第二个查询使用字符串。

PS:在两种情况下都需要引用,否则您很容易受到SQL注入攻击。

答案 1 :(得分:0)

SQL查询中的

字符串必须用引号括起来,而整数则不包含在内。所以如果" BarLink"包含字符串,您必须添加:

     <div ng-messages="contactForm.$valid" ng-if="contactForm.$submitted && contactForm.$valid">

       <span class="sent">Your message has been sent!</span>

   </div>