0

我想在我网站的数据库中保存 10.000 个页面。

当我运行该文件时,每个页面都会发生此错误。

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '_trackPageLoadTime']);(function() {var ga = document.createElement("script"); ga' 在第 1 行附近使用正确的语法

我认为有一些字符会导致错误。

保存的.php

<?php 
include "conexao.php";

for ($nr=1; $nr<=10000; $nr++){
    $url = "http://www.site.com/u$nr";
    $html = file_get_contents($url);

    set_time_limit(120);

    $tabela_bd = "paginas";

    $sql = mysql_query("INSERT INTO $tabela_bd(html) VALUES('$html')");
    if ($sql) {echo "Cadastrado com sucesso!!";
} else {
echo "Falha ao cadastrar.".mysql_error();
}

}

?>

@edit 解决了我的字符问题,但现在有些表格被保存而没有内容。

4

5 回答 5

3

不要使用已弃用的 mysql_* 函数。请改用 mysqli_* 函数。

更好的是,使用支持占位符的抽象库,例如 PDO。这会根据需要自动应用转义。看:

http://php.net/manual/en/book.pdo.php

占位符的使用示例:

http://www.php.net/manual/en/pdo.prepare.php

在你的情况下,也许是这样的:

$stmt = $pdo->prepare("insert into $tabela_bd( html ) values ( :html )");
$stmt->bindValue('html', $html);
$stmt->execute();
于 2013-02-02T17:22:18.080 回答
1

您的文件中似乎有转义字符,例如\;。您需要做的是确保这些字符不会干扰查询。

用这个

$html = mysql_real_escape_string($html);
$sql = mysql_query("INSERT INTO $tabela_bd(html) VALUES('$html')");
于 2013-02-02T17:17:36.710 回答
0

您没有转义 html 中的特殊字符。尝试 mysql_escape 或类似的东西。

于 2013-02-02T17:16:22.687 回答
0

您需要转义 $html 变量:

$sql = mysql_query("INSERT INTO $tabela_bd(html) VALUES('" . mysql_real_escape_string($html) . "')");
于 2013-02-02T17:17:12.973 回答
0

您应该在您的情况下使用mysql_real_escape_string,如下所示。

<?php 
include "conexao.php";

for ($nr=1; $nr<=10000; $nr++){
    $url = "http://www.power-pixel.net/u$nr";
    $html = file_get_contents($url);

    // escape the string
    $html = mysql_real_escape_string($html);

    set_time_limit(120);

    $tabela_bd = "paginas";

    $sql = mysql_query("INSERT INTO $tabela_bd(html) VALUES('$html')");
    if ($sql) {
      echo "Cadastrado com sucesso!!";

    } else {
      echo "Falha ao cadastrar.".mysql_error();
    }

}

?>
于 2013-02-02T17:20:11.727 回答