我有一个函数可以生成大约 8,000 个字符的随机文本。
此文本是在首次访问页面时根据某些参数生成的。
我希望将此文本存储在数据库中(不需要为每次访问生成另一个文本)。
我成功地将除大文本之外的所有变量存储在数据库中。也可以在文本较小时存储:
$LargeText=Texto(); //-> about 8,000 characters
if(empty($Descricao)){
$InserirDescricao = strtoupper($Nome);
mysql_query("UPDATE lavanderias SET descricao = \"$InserirDescricao\" WHERE id=$CidadeID");} //-> This works fine
if(empty($Texto)){
mysql_query("UPDATE lavanderias SET texto = \"$LargeText\" WHERE id=$CidadeID");} //-> This not works :(
if(empty($Texto)){
mysql_query("UPDATE lavanderias SET texto = \"ANYTHING\" WHERE id=$CidadeID");} //-> This works fine
第三条消息生成此错误消息:
Fatal error: Uncaught exception 'mysqli_sql_exception' with message
'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
'servico"><div class="servico-ilustracao servico-ilustracao-5"><h2>Lavagem de Pro'
at line 1'
可能是字符数阻止了插入?我如何设法插入带有大文本的变量?
最佳答案
根据您作为评论发布的 SQL 错误消息,您尝试更新的文本中至少有一个单引号。因为您通过字符串连接创建 SQL 查询,所以该单引号被解释为 SQL 语法的一部分并导致语法错误。
始终运行您通过函数 mysql_real_escape_string
放入 SQL 查询中的任何字符串转义任何在 SQL 中具有特殊含义的字符。更好的是,转储旧的、过时的 mysql_*
API 并使用更新的 mysqli-API与 prepared statements .此 API 会自动为您执行此操作。
这非常重要,因为您的查询也容易受到 SQL 注入(inject)攻击。想象一下,当我输入文本 '; 时会发生什么? DROP TABLE 薰衣草; --
在我的网站上。
关于php - 如何使用 PHP 将大文本插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621509/