【问题标题】:how to insert dynamic text data having apostrophe to sql [duplicate]如何将具有撇号的动态文本数据插入到sql [重复]
【发布时间】:2016-04-16 14:29:02
【问题描述】:

我有一个文本字段供用户输入他们对产品的描述。用户可以输入带有撇号的数据。那么我怎样才能将该数据插入到 sql 中。

【问题讨论】:

  • 是的,当然你可以把数据放到SQL中
  • 您当前如何插入产生错误的数据?发布您当前拥有的 PHP/SQL。
  • 您可以使用 str_replace() 将 ' 更改为任何自定义 #value 在您再次取回它们时使用替换功能使其正常 ' :)

标签: php mysql


【解决方案1】:

要允许使用撇号,您可能必须在插入数据库时​​使用 mysql_real_escape_string() 或添加斜杠。在 Internet 上阅读有关这些功能的更多信息。 这些函数在将数据放入数据库之前对其进行清理。 阅读this

【讨论】:

    【解决方案2】:

    当用户输入有关产品的描述时,您会通过“id 或”名称“获取该值并存储在变量中。例如

    $productDescription = $_POST['product'];
    $query="INSERT INTO XYZ VALUES($productDescription);
    

    IN SQL COLUMN DataType 必须为 varchar

    【讨论】:

      【解决方案3】:

      准备好的语句将以安全的方式绑定值,以允许将带有撇号的值插入到您的表中。也是防止SQL注入的方法。

      这是使用 PHP 的 PDO 库完成此任务的最简单方法的示例:

      $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
      $user = 'dbuser';
      $password = 'dbpass';
      
      try {
          $dbh = new PDO($dsn, $user, $password);
      } catch (PDOException $e) {
          echo 'Connection failed: ' . $e->getMessage();
      } 
      $prep = $dbh->prepare('INSERT INTO item(title, link) VALUES(?, ?)');
      $prep->execute( array($title, $link) );
      

      在此处阅读更多信息:http://php.net/manual/en/pdo.prepare.php

      PDO::prepare — 准备执行语句并返回语句对象

      SQL 语句可以包含零个或多个命名 (:name) 或问号 (?) 参数标记,在执行语句时将替换它们的实际值

      【讨论】:

        猜你喜欢
        • 2012-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 2011-04-13
        • 2015-07-04
        • 1970-01-01
        相关资源
        最近更新 更多