Я буквально потратил часы на поиск в Google и поиск, и я понятия не имею, что я делаю неправильно. Я использую POST, и я сам пробовал запрос в phpMyAdmin, и он работал, но он не работает в PDO, и я не знаю, почему. Он работал, когда я использовал mysql_query, а что нет, но я хочу защитить себя от SQL-инъекции.Подготовленный запрос PDO возвращает 0 затронутых строк
Вот код, я использую:
<?php
if(isset($_POST['user']) and isset($_POST['pass'])) {
$name = $_POST['user'];
$pass = $_POST['pass'];
$db = new PDO('mysql:host=localhost;dbname=*****;charset=utf8', '*****', '*****');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $db->prepare("SELECT * FROM stored WHERE _User LIKE :username AND _Pass LIKE :password");
$query->bindValue(":username", $user, PDO::PARAM_STR);
$query->bindValue(":password", $pass, PDO::PARAM_STR);
$query->execute();
echo $query->rowCount();
}
?>
'Для большинства баз данных PDOStatement :: rowCount() не возвращает количество строк, на которые влияет инструкция SELECT. Вместо этого используйте PDO :: query() для выдачи оператора SELECT COUNT (*) с теми же предикатами, что и ваш запрошенный оператор SELECT, а затем используйте PDOStatement :: fetchColumn(), чтобы получить количество строк, которое будет возвращено. Затем ваше приложение может выполнить правильное действие. 'Http://php.net/manual/en/pdostatement.rowcount.php –
Скопируйте код. Помогите людям помочь вам :) – Fluffeh
Помимо всего прочего вопросы, ** где на Земле вы получили эту идею использования LIKE для сравнения строк? ** –