【问题标题】:Python inserting html into MySQLPython将html插入MySQL
【发布时间】:2012-08-15 15:39:14
【问题描述】:

我正在尝试将 HTML 代码插入 MySQL 数据库中的字段。

我用下面的代码来做

cur.execute("INSERT INTO `table1`(field1) VALUES("+ str(data) +")")

但我收到以下错误:

_mysql_exceptions.ProgrammingError: (1064, '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 \'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" "http://www.w3.or\' at line 3')

我该如何解决这个问题?提前致谢!

【问题讨论】:

  • a) data 是什么样子的,b) 请不要使用字符串连接来创建 SQL 查询,使用准备好的语句或 ORM
  • 强制 XKCD 链接:xkcd.com/327
  • @DanielDiPaolo - 我认为它不太明确。要么清理你的 SQL,要么永远不要让任何人使用你的代码。

标签: python mysql syntax-error


【解决方案1】:

你应该转义你的字符串:

cur.execute("INSERT INTO `table1`(field1) VALUES('"+ conn.escape_string(str(data))+"')")

conn 是您的联系人。

【讨论】:

  • 我尝试了以下操作,但是我得到了 conn.未定义,所以我将其更改为 mysqldb,它说:code_mysql_exceptions.ProgrammingError: (1064, '您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法在第 1 行的 \'\\r\\n\\r\\n\"-//W3C//DTD HTML 4.01 Transitional//EN\\" \\"http:\' 附近使用') code
  • 你能发布生成的查询吗?也尝试使用这种括号:'
  • 代码有效!谢谢!但我似乎只能选择数据,但它没有插入。当我启动一个新的 .py 文件并使用相同的代码插入时,它就可以工作了。有什么想法吗?
  • 使用:con.commit()。现在完美运行!感谢大家的帮助!
【解决方案2】:

检查您的字符串 - 看起来您正在转义单引号,但未转义双引号(并且由于您使用双引号括起来,因此字符串“提前”关闭)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2018-03-02
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多