本问题已经有最佳答案,请猛点这里访问。

我得到这个错误:

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 's','portal','','offering','MSNBC','News','','sports','','MSN','Money','','games'' at line 3

唯一的问题是,插入包含撇号的数据时会出现此错误。我尝试将数据类型从VARCHAR更改为TEXT,但结果仍然相同。

我试着把addslashes()放在

如何解决这个问题?

编辑:

$query=" INSERT INTO alltags

(id,tag1,tag2,tag3,tag4,tag5,tag6,tag7,tag8,tag9,tag10,tag11,tag12,tag13,tag14,tag15,tag16,tag17,tag18,tag19,tag20,tag21,tag22,tag23,tag24,tag25,tag26,tag27,tag28,tag29,tag30)

VALUES

('',mysql_real_escape_string($uniqkey[0]),mysql_real_escape_string($uniqkey[1]),mysql_real_escape_string($uniqkey[2]),mysql_real_escape_string($uniqkey[3]),mysql_real_escape_string($uniqkey[4]),mysql_real_escape_string($uniqkey[5]),mysql_real_escape_string($uniqkey[6]),mysql_real_escape_string($uniqkey[7]),mysql_real_escape_string($uniqkey[8]),mysql_real_escape_string($uniqkey[9]),mysql_real_escape_string($uniqkey[10]),mysql_real_escape_string($uniqkey[11]),mysql_real_escape_string($uniqkey[12]),mysql_real_escape_string($uniqkey[13]),mysql_real_escape_string($uniqkey[14]),mysql_real_escape_string($uniqkey[15]),mysql_real_escape_string($uniqkey[16]),mysql_real_escape_string($uniqkey[17]),mysql_real_escape_string($uniqkey[18]),mysql_real_escape_string($uniqkey[19]),mysql_real_escape_string($uniqkey[20]),mysql_real_escape_string($uniqkey[21]),mysql_real_escape_string($uniqkey[22]),mysql_real_escape_string($uniqkey[23]),mysql_real_escape_string($uniqkey[24]),mysql_real_escape_string($uniqkey[25]),mysql_real_escape_string($uniqkey[26]),mysql_real_escape_string($uniqkey[27]),mysql_real_escape_string($uniqkey[28]),mysql_real_escape_string($uniqkey[29]))";

mysql_query($query) or die(mysql_error());

我把它改成了mysql_real_escape_string。这个语法正确吗?我出错了。

ID是一个自动增量,所以我把它留空了

使用PDO…它可以同时解决两个问题。PHPNET/PDO

包含MySQL可能解释的字符的数据编码过程称为"转义"。必须使用mysql_real_escape_string转义字符串,它是一个php函数,而不是mysql函数,这意味着在将查询传递到数据库之前,必须在php中运行它。必须从外部源中转义进入程序的任何数据。任何未转义的数据都可能是SQL注入。

在构建查询之前,必须先转义数据。此外,您还可以使用php的循环结构和range以编程方式构建查询:

// Build tag fields

$tags = 'tag' . implode(', tag', range(1,30));

// Escape each value in the uniqkey array

$values = array_map('mysql_real_escape_string', $uniqkey);

// implode values with quotes and commas

$values ="'" . implode("', '", $values) ."'";

$query ="INSERT INTO alltags (id, $tags) VALUES ('', $values)";

mysql_query($query) or die(mysql_error());

从概念上讲,这很有意义。我仍在尝试将您的代码合并到我的代码中。谢谢你的意见

@Karthik重要的是,在您将数据传递给mysql_query之前,您认识到mysql_real_escape_string是在PHP中运行的。我不知道OMG小马是怎么搞错的…

使用mysql_real_escape_string是处理SQL插入/更新字符的一种更安全的方法:

另外,我将把您的列从文本改回varchar-搜索,除了索引之外,工作得更好。更新您的更新

由于id是一个自动递增列,您可以:

下面是一个使用空值作为ID占位符的示例:

我想强调的是,您不应该这样设置列。

我编辑了我的问题。我的语法有什么问题吗?

@小马:这个密码真的是错的。我会调查谁给了你四张赞成票,也会杀了他们。不能将PHP函数调用混合到SQL字符串中。你必须跳出"字符串"并调用.mysql_real_escape()。每个变量单独使用。

你现在一定很晚了,你通常都比那好。

@小马,请把这个修好。在很多层面上都是错误的!

美加的回答略有改进:

编辑:美加更新了他的帖子,所以他的回答现在更好了。

$query = 'INSERT INTO alltags (id, ';

// append tag1, tag2, etc.

$query .= 'tag' . implode(', tag', range(1, 30)) .") VALUES ('',";

// escape each value in the uniqkey array

$escaped_tags = array_map('mysql_real_escape_string', $uniqkey);

// implode values with quotes and commas, and add closing bracket

$query .="'" . implode("', '", $escaped_tags) ."')";

// actually query

mysql_query($query) or die(mysql_error());

+1就像你构建标签串的方式一样;现在很晚了,我很累。

请看我的回答。这是正确的代码。

如果要使用错误引导的mysql_query()函数,则必须按如下方式分解SQL字符串:

或者,由于您有一个数组,请使用巧妙的方法调用立即全部转义:

$uniqkey = array_map("mysql_real_escape_string", $uniqkey);

mysql_query("USE THE ESCAPED ARRAY THEN DIRECTLY ('$uniqkey[0]', '$uniqkey[1]', '$uniqkey[2]', '$uniqkey[3]', ...");

php 单引号 数据库,关于php:如何在写入Mysql数据库时处理撇号’单引号相关推荐

  1. gorm存指针数据_gormt: gormt 是一个数据库映射工具,可以将 mysql 数据库自动生成 golang sturct 结构...

    mysql数据库转 struct 工具,可以将mysql数据库自动生成golang sturct结构,带大驼峰命名规则.带json标签 交互界面模式 ./gormt -g=true 命令行模式 ./g ...

  2. Oracle 数据库、Microsoft SQL Server、MySQL 数据库三种常见数据库的区别深度剖析

    文章目录 前言 一.ORACLE 数据库 二.Microsoft SQL Server 数据库 三.MySQL 数据库 总结 前言 Oracle 数据库.Microsoft SQL Server.My ...

  3. php mysql表单源码_PHP表单数据写入MySQL数据库的代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: if(!isset($_POST['submit'])){ //如果没有表单提交,显示一个表单 ?> 国家: 动物名称(英文): 动物名称( ...

  4. 【推荐收藏 】Python写入MySQL数据库的三种方式,最后一种方式方便又高效

    大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似 ...

  5. pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库

    pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库 在pandas中读取表类文件的时候有一个参数chunksize,只要指定了这个参数的数值,那么得到的结果就不 ...

  6. python爬取新闻并归数据库_Python爬取数据并写入MySQL数据库操作示例

    Python爬取数据并写入MySQL数据库的实例 首先我们来爬取 http://html-color-codes.info/color-names/ 的一些数据. 按 F12 或 ctrl+u 审查元 ...

  7. 关于log4net日志写入mysql数据库记录

    网上关于log4net日志写入mysql数据库的博客感觉比较少,所以这边搞定之后先过来记录一下. 首先新建个项目,我命名是log4netDemo,然后需要引入两个dll,一个是mysql.dll,一个 ...

  8. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...

  9. python爬取mysql数据_Python爬取数据并写入MySQL数据库的实例

    Python爬取数据并写入MySQL数据库的实例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python爬取数据并写入MySQL数据库的实例.txt ] (友 ...

  10. Asterisk realtime 之SIP用户动态写入mysql 数据库

    asterisk  配置默认是文本方式由文件管理,但是对于SIP用户,队列坐席这些数据,保存在 数据库中方便维护,Asterisk 通过realtime 引擎支持此功能,可以把其 配置文件写入 数据库 ...

最新文章

  1. python 类的魔术方法_python中类的魔术方法
  2. Linux设置默认Python版本
  3. 看我如何发现Uber合作方网站XXE 0day漏洞并获得9000美元赏金
  4. 吴恩达 coursera AI 专项五第一课(上)总结+作业答案
  5. php curl的数据后台如何接收,PHP curl以模拟put请求,后台无法接受到数据是怎么回事?...
  6. 使用RestTemplate时报错java.lang.IllegalStateException: No instances available for 127.0.0.1
  7. php获取某地的ip,php获取本土实际IP
  8. 接口参数,get和post
  9. FFmpeg API 变更记录
  10. 面试美团,面试官突然问我 Java “锁” ,我哭了
  11. KELL中程序封装的实现
  12. AllenNLP2.2.0:入门篇
  13. Eclipse使用(入门教程)
  14. 白帽子讲web安全读后感
  15. 皮克公式 Peake‘s theorem
  16. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
  17. asp.net MVC三层结构代码生成器
  18. 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)
  19. 设置大小合适的Win7休眠文件Hiberfil.SYS
  20. 天涯共此时--中秋赏古诗

热门文章

  1. Linux下安装Kafka(单机版)
  2. 【kafka系列】centos7系统安装kafka
  3. flutter图片点击跳转_Flutter系列之Platform Channel使用详解
  4. 探索高效jQuery的奥秘
  5. 前端面试知识点(所谓的面试题)(备份前端网)
  6. 我发起了一个 ILBC 的 子项目 EScript
  7. [原创]BizTalk动手实验系列目录
  8. 关于特殊的LCS问题的优化
  9. “智慧城市”建设以前是传说,现在能体验
  10. protopype 和 __proto__的区别