【问题标题】:Square brackest cannot be inserted into database方括号不能插入数据库
【发布时间】:2019-07-27 14:55:08
【问题描述】:

我有一个将其内容发送到数据库的文本区域。大多数内容都可以像 HTML 和 javascript 一样正常发送。我想用下面的形式写一些 PHP:

   $data = $_POST['stuff'];

以上在数据库中被缩写为:

 $data = $_POST[

我允许数据库中包含 300 个或多个字符,并尝试了不同的数据库排序规则,例如 latin1_swedish_ci、utf8_unicode_ci 和 utf8_bin,但均未成功。

一个单独的 PHP 页面处理插入

INSERT INTO t values ('line_text');

行文本变量抓取文本区域的内容并将它们发送到插入语句。

【问题讨论】:

  • 请说明您如何将信息添加到数据库中。我的猜测是您没有使用参数化查询和/或正确转义您的输入
  • 在此之前只有一个问题,如果我使用准备好的语句会解决问题吗?
  • 很可能,是的,假设字符串的转义是导致问题的原因。如果没有看到代码,我不确定是什么导致了问题。但老实说,您应该在所有情况下都使用准备好的语句和参数,以防止 SQL 注入攻击。所以不管它是否解决了这个问题,无论如何都是你需要做的事情

标签: mysql collation


【解决方案1】:

在将字符串传递给INSERT(和其他)语句之前,您必须转义或“绑定”字符串。

这听起来像是你建造的;你看到撇号的问题了吗?

INSERT INTO t VALUES ( '$data = $_POST['stuff'];' )

【讨论】:

  • 对不起,我有一个单独的 PHP 页面。我编辑了我的答案以显示这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2011-01-24
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多