mysqli_real_escape_string不会工作?

时间:2014-05-08 11:27:08

标签: php mysql mysqli phpmyadmin

我有这个简单的搜索引擎代码,但窃取无法阻止我的SQL注入

 $sql = mysqli_real_escape_string($searchengine,$sql);

无法正常工作或我使用错了...我做错了什么?

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("searchengine");

$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$_GET[term]%' LIMIT 0,$_GET[results]");

while($ser = mysql_fetch_array($sql)) { echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>"; }


?>

1 个答案:

答案 0 :(得分:1)

mysqli_real_escape_stringmysqli模块的一部分。您正在混合而不是正确使用该功能。

这是你正确的做法:

mysql_connect("localhost", "root", "");
mysql_select_db("searchengine");

$sql = mysql_query(sprintf(
    "SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,%d",
        '%'. mysql_real_escape_string($_GET['term']) .'%',
        mysql_real_escape_string($_GET['results']))
);

while($ser = mysql_fetch_array($sql)) {
    echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>";
}

// don't forget to close connection
mysql_close();

P.S。 mysql_*已正式弃用。请查看使用PDOMySQLi库。