【发布时间】:2016-09-29 15:59:21
【问题描述】:
我正在使用 HTML 输入元素来接受来自用户的数据并将其保存在 mySQL 数据库中。为此,我使用 PHP 和 mysqli 创建一个准备好的语句。
在我尝试接受包含双引号(“)的输入字符串之前,这非常有效。如果输入字符串包含双引号,则保存的数据将是直到双引号字符的字符串。
例如:
我看到一个 7'9" 的人。
将保存为:
我看到了 7'9
我搜索了高低,但找不到解决方案。我试过 mysqli_real_escape_string,但这只是添加反斜杠来转义有意义的字符。当与准备好的语句结合使用时,反斜杠按字面意思解释,双引号仍然会中断字符串。 所以我的例子是:
我看到一个 7\'9
我什至认为 PHP 可能没有从输入元素中获取整个字符串,但是当我回显元素的值时,我确实看到了整个字符串。
这是一些示例代码。我删除了一些业务细节,但这通常是我想要做的。
$sqlSave = $objConnection->prepare('update tbl set Answer=? where ID=?;');
$sqlSave->bind_param("si", $sqlAnswer, $sqlID);
$sqlSave->execute();
我觉得我遗漏了一些明显的东西,所以请原谅我的无知。感谢您提供任何帮助或其他信息。
【问题讨论】:
-
你的专栏的长度是多少?双引号不应该对您显示的代码有问题。
-
列是 VARCHAR(200)。
-
数据库在双引号处被截断了,还是在浏览器中查看被截断了?如果您在
input之类的元素中输出,则双引号将关闭value属性。 -
感谢您的帮助。