我PDO连接不起作用(my pdo connection doesn't work)

2019-10-22 04:03发布

呼应我以前有关SQL注入的问题。 我试图建立一个PDO连接。

对此,我想用新的来代替我的旧代码:

这里是老

$conn = mysql_connect("localhost", "sec", "dubbelgeheim") or
            die('Error: ' . mysql_error());

    mysql_select_db("bookshop");

    $SQL = "select * from productcomment where ProductId='" . $input . "'";
    $result = mysql_query($SQL) or die('Error: ' . mysql_error());

    $row = mysql_fetch_array($result);
    if ($row['ProductId']) {
        echo "Product:" . $row['ProductId'] . "<br>";
        echo "Annotation:" . $row['Comment'] . "<br>";
        echo "TestOK!<br>";
    } else
        echo "No Record!";

    mysql_free_result($result);
    mysql_close();

这里是新的:

$input = $_GET['input'];

if ($input) {
    $user= 'sec';
      $pass = 'dubbelgeheim';
    try {
        $dbConn = new PDO('mysql:host=127.0.0.1;dbname=bookshop', $user, $pass);
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
    $escaper = $db->real_escape_string($input);
    $statement = $db->prepare("SELECT * FROM productcomment WHERE ProductId = ? LIMIT 1");
    $statement->bind_param("s", $escaper);
    $statement->execute();
    $result = $statement->get_result();
    $statement->close();
    $count = $result->num_rows;
    if ($count > 0) {
        while ($row = $result->fetch_assoc()) {
            echo "Product:" . $row['ProductId'] . "<br>";
            echo "Annotation:" . $row['Comment'] . "<br>";
            echo "TestOK!<br>";
        }
    } 
    else {
        echo 'No record!';
    }
    $result->free();
    $db->close();
}

当我尝试这种新的代码。它提供了以下错误:

错误!:SQLSTATE [HY000] [1045]访问被拒绝的用户 '秒' @ 'localhost' 的(使用密码:是)

我也试图与127.0.0.1到本地主机替换。

我的目标是让我的网页安全的SQL注入。

任何人都可以有一个很好的解决方案!

Answer 1:

该代码乍看上去确定。 试试这个解决方案。 它看起来像这样anonymus用户可能是问题。

编辑:(如suggedted在评论)

总结:推荐的解决方案是放弃这个匿名用户。 通过执行

DROP USER ''@'localhost';


文章来源: my pdo connection doesn't work