мое соединение pdo не работает

Повторяю мой предыдущий вопрос о 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] Доступ запрещен для пользователя
‘sec’ @ ‘localhost’ (используя пароль: ДА)

Я также попытался заменить localhost на 127.0.0.1.

Моя цель — сделать мою страницу безопасной для SQL-инъекций.

Пусть кто-нибудь найдет отличное решение!

1

Решение

На первый взгляд код выглядит нормально.
Пытаться этот решение. Похоже, этот анонимный пользователь может быть проблемой.

РЕДАКТИРОВАТЬ: (как отмечено в комментариях)

В итоге:
Рекомендуемое решение — удалить этого анонимного пользователя. Выполняя

DROP USER ''@'localhost';
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]