php - 如何使用 PHP 将大文本插入数据库?

标签 php database mysql

我有一个函数可以生成大约 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-APIprepared statements .此 API 会自动为您执行此操作。

这非常重要,因为您的查询也容易受到 SQL 注入(inject)攻击。想象一下,当我输入文本 '; 时会发生什么? DROP TABLE 薰衣草; -- 在我的网站上。

关于php - 如何使用 PHP 将大文本插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621509/

相关文章:

PHP - 无法访问外部 URL

php - DQL select 语句中的参数(Symfony2/Doctrine)

database - 在 Linux 上为 PostgreSQL 配置语言环境

MySQL 日期查询优化

php - 成功进入数据库的消息

php - Laravel 5.1 Eloquent ORM随机返回不正确的关系-*重大更新*

mysql - Access 中的查询非常慢,SQL 服务器可以做得更好吗

ruby-on-rails - 具有祖先的 Rails 复杂搜索

mysql - SELECT 列表不在 GROUP BY 子句中并且包含非聚合列 .... 与 sql_mode=only_full_group_by 不兼容

mysql - MySQL 中的 ROW_NUMBER()