【问题标题】:Storing data in MySQL在 MySQL 中存储数据
【发布时间】:2013-02-05 12:42:49
【问题描述】:

我想在 mysql 数据库中存储一些值,例如 "st paul's school"。但是由于特殊符号 ' 我无法将这些值存储在 mysql 中。我尝试了 varchar 数据类型,但它不起作用。请建议一个合适的方法或数据类型来存储 ' 在 mysql 中。

【问题讨论】:

标签: mysql syntax-error special-characters storing-data


【解决方案1】:

像这样添加两个单引号 '' 或者像这样转义它 \'

【讨论】:

  • 但我是从网站上获取这些名称的。所以我永远不知道单引号在名称中的位置。所以我不能在单引号的位置添加双引号。
  • 如何将这些名称插入数据库?如果您通过应用程序(C#、Java 等)进行更新,您能否不使用字符串替换函数将单引号实例替换为两个单引号?
  • 该名称也可以是圣玛丽学校代替圣保罗学校。为了使用替换功能,我需要检查每个名称的每个字符。间接地它会影响我的代码的性能。你能给我推荐一个合适的数据类型来在 mysql 中存储带有撇号的值吗?
【解决方案2】:

如果您直接在 MySQL 服务器上执行此操作,双引号即可。示例

INSERT INTO tableName VALUES ('St. Paul''s School')

但在前端,为此使用 PreparedStatements

如果您使用PHP,请在此使用PDOMySQLI 扩展名以避免SQL Injection。请看下面的文章,

【讨论】:

  • 但我是从网站上获取这些名称的。所以我永远不知道单引号在名称中的位置。所以我不能在单引号的位置添加双引号。
  • 你在用什么程序? PHP?
【解决方案3】:

如果你有这个撇号的变量,请使用htmlentities

 $your_var = "St. Paul's School";
 $your_var = htmlentities($your_var);
 INSERT INTO tableName VALUES ('$your_var')

如果你只有字符串,你可以做这样的双引号

 INSERT INTO tableName VALUES ("St. Paul's School")

【讨论】:

  • 如果你从其他变量中获取它,这里是你的第一个解决方案
【解决方案4】:

只需将引号符号替换为其实体即可。 如果您使用的是 php

<?php
    $str = "st paul's school";
    $str = str_replace("\'","&acute;",$str);
    $str = str_replace("\"","&quot;",$str);
?>

你也可以使用

$str= htmlentities($str,ENT_QUOTES, 'UTF-8');

【讨论】:

    【解决方案5】:

    您可以使用 mysqli_real_escape_string($text) 来转义您要插入数据库的文本中的那些 '。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2012-09-04
      相关资源
      最近更新 更多