Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么可以';我不能向SQL数据库添加一个大字符串吗?_Php_Html_Sql - Fatal编程技术网

Php 为什么可以';我不能向SQL数据库添加一个大字符串吗?

Php 为什么可以';我不能向SQL数据库添加一个大字符串吗?,php,html,sql,Php,Html,Sql,我有一个表单,其中填写字段并提交,这将所有这些添加到SQL数据库中的表中。为此,我有一个简短的PHP脚本,它获取所有post值,然后将它们插入数据库。提交表单中的一个字段长度超过7000个字母,因此不会提交。如果我清除描述框,即文本超过7k个字符的1,它将提交。我可以手动将所有这些详细信息添加到数据库中,并在网站上显示它们。问题在于描述这么长。有没有办法解决这个问题,或者对信件的数量有限制? 这是insertpost.php中的代码。这是提交表单时调用的页面 $Title = $

我有一个表单,其中填写字段并提交,这将所有这些添加到SQL数据库中的表中。为此,我有一个简短的PHP脚本,它获取所有post值,然后将它们插入数据库。提交表单中的一个字段长度超过7000个字母,因此不会提交。如果我清除描述框,即文本超过7k个字符的1,它将提交。我可以手动将所有这些详细信息添加到数据库中,并在网站上显示它们。问题在于描述这么长。有没有办法解决这个问题,或者对信件的数量有限制? 这是insertpost.php中的代码。这是提交表单时调用的页面

        $Title = $_POST['title'];
    $LinkTitle = $_POST['linktitle'];
    $Category = $_POST['category'];
    $SubCategory = $_POST['subcategory'];
    $MainPic = $_POST['mainpic'];
    $Description = $_POST['Description'];
    $Main = $_POST['maintext'];
    $Featured = $_POST['featured'];
    $thumb = $_POST['thumbnail'];

    include 'phpincludes/dbconnection.php';

    $insertSQL = "INSERT INTO Posts (ID,Title,LinkTitle,MainPicture,ViewCount,Description,Maintext,Type,Featured,category,thumbnail) 
    VALUES('','$Title','$LinkTitle','$MainPic','0','$Description','$Main','$SubCategory','$Featured','$Category','$thumb')";

    $db->query($insertSQL)

是的,有一个限制,您可以在PHP字符串手册中找到它:

注意:字符串可以大到2GB


这需要允许PHP使用这么多内存。这并不总是可以基于操作系统进行配置。关于更多细节,我可以建议在我的博客文章的开头:。

正如haskre所建议的,在PHP中,字符串是一个限制,但是它相当大,7000个字符不应该引起问题。MySQL中对字段大小也有更严格的限制,但是我们可以忽略这一点,因为您说过可以将条目直接保存到MySQL中,并且它们显示良好

你需要找出它为什么不插入。我怀疑你的7000个字符中有一个字符正在破坏它,可能是一个引号符号或者你需要转义的东西

在中使用7000个字符再次运行脚本,并打印出MySQL错误,以便调试和解决

要从MySQL打印错误,可以使用*MySQL\u error()*。有关这方面的详细信息,请参阅。

duplicate:SQL注入:。警告!您的代码包含一个--您正在将原始的、未过滤的、未验证的用户输入直接传递到SQL字符串中。SQL注入是一种很好的方法。你可以考虑使用。见鬼,根据您调用数据库的方式,您可能已经在使用其中的一个。。。