【问题标题】:Error in SQL Select Where statementSQL Select Where 语句中的错误
【发布时间】:2012-09-03 01:59:15
【问题描述】:

遇到以下错误,我似乎无法弄清楚原因:

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 1号线's-Gravenmoer''附近

这是 SQL 语法:

$plaats = $row['plaats'];    

$query10 = "SELECT * FROM gebieden WHERE plaats = '$plaats'"; 

对于那些感兴趣的人,变量有这样的内容:'s-Gravenmoer

为什么它给我一个错误? 谢谢!

【问题讨论】:

  • 这种db操作是灾难... var_dump($query10);输出是?

标签: php sql syntax where


【解决方案1】:

使用mysql_real_escape_stringhtmlspecialchars

$plaats = $row['plaats'];    

$query10 = "SELECT * FROM gebieden WHERE plaats = '".mysql_real_escape_string($plaats)."';";

【讨论】:

    【解决方案2】:

    这是因为$plaats的值包含单引号。

    您的代码容易出现 SQL Injection。使用 PDOMYSQLI

    使用 PDO 扩展的示例:

    <?php
        $stmt = $dbh->prepare("SELECT * FROM gebieden WHERE plaats = ?");
        $stmt->bindParam(1, $plaats);
        if ($stmt->execute()) 
        {
          while ($row = $stmt->fetch()) 
          {
            print_r($row);
          }
        }
    ?>
    

    这将允许您使用单引号搜索记录。

    【讨论】:

    • 好吧,我的代码没有被 SQL 注入的风险,因为用户只能用选择框在这个表中输入一些东西,他们不能输入一个字符串或任何东西......也就是说,谢谢给你的代码,马上去测试!
    • @user1555076 如果是这种情况,请使用替代mysql_real_escape_string($plaats)
    • @user1555076 如果你这样做,那就没问题了。
    猜你喜欢
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多