Php 通过MySQLI_query()向MySQLI传递长查询

Php 通过MySQLI_query()向MySQLI传递长查询,php,mysql,mysqli,Php,Mysql,Mysqli,这就是我想做的,我想能够缓存整个网页,就像这样 $domain = "cnn.com"; $title = "CNN"; $cacheado = file_get_contents('http://www.google.com'); $ingresar = "INSERT INTO indexed_links (link, title, cacheado) VALUES ('$domain', '$title', '$cacheado')"; $db_on = mysqli_connect(

这就是我想做的,我想能够缓存整个网页,就像这样

$domain = "cnn.com"; 
$title = "CNN";
$cacheado = file_get_contents('http://www.google.com');

$ingresar = "INSERT INTO indexed_links (link, title, cacheado) VALUES ('$domain', '$title', '$cacheado')";
$db_on = mysqli_connect('localhost', 'root', 'pass', 'data_base');
mysqli_query($db_on, $ingresar);
我最担心的是,我试图用页面example.com来完成这段代码,它将是$cacheado=file\u get\u contents(“”)

它工作得非常好,它将整个HTML代码添加到页面中,这有点短,这是一个简单的HTML代码,现在,谷歌和其他一些网站在HTML中添加了更多的代码,因此,具有更长HTML代码的网站不必通过mysqli_查询,我想这与MySql有关,而不是PHP,因为example.com的代码工作得很好


我想插入HTML代码的表的列是cacheado,它在MySQL文本数据库中设置了一个类型,这有什么关系吗?

将字段类型从
text()
更改为
VARCHAR(65535)
。这是我现在可以为字段设置的最大长度。

问题不在于数据类型。相反,在生成INSERT语句之前未能转义字符串


特别是,该网页中可能有一个撇号(')。

如果
$cacheado
恰好包含一个引号,MySQL无法理解您的查询。仔细阅读准备好的语句。如果是这样,它将无法处理example.com或我的localhost文件夹。。。但我还是尝试了你的解决方案,我写了$cacheado=file_get_contents(“);如果是这样,它将无法处理example.com或我的localhost文件夹……但我还是尝试了你的解决方案,我写了$cacheado=file_get_contents(“);还是不行你误解了我的评论。假设您试图插入的HTML看起来像
Hello world
——想想在这种情况下您的
insert
查询会是什么样子。HTML中的单引号将使查询文本无效,MySQL将拒绝它。再次,阅读准备好的语句和错误处理。现在我明白了,你应该说是HTML代码,我以为你在说函数参数。你可以有
LONGTEXT
类型的字段,可以容纳65535个以上的符号。嗯?文本的最大长度为65K,就像VARCHAR一样。LONGTEXT仅限于4GB。MEDIUMTEXT限制为16MB。我尝试了所有选项,都导致了失败,显然,当var$cacheado包含一个包含很长HTML代码的网站时,mysqli不会接受我的查询,原因是我尝试了example.com和localhost,它们包含很短的HTML代码sok,所以如果我想用双引号(“)替换(')?preg_replace或str_replace在这种情况下会很有用?好吧,这就是问题所在,你对我帮助很大,我现在会找到解决这个问题的方法,非常感谢mate.PHP的addslashes()或real_escape_string()或其他东西,这取决于你使用的API。