MySQL оператор И не работает для передачи нескольких параметров

try {
$conn = new PDO('mysql:host=localhost;dbname=dbtable', $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $conn->prepare('SELECT * FROM table WHERE name = ' . $conn->quote($name).' AND id = '. $conn->quote($id));
$data->execute();

while($row = $data->fetch(PDO::FETCH_ASSOC)) {
echo "ID : ".$row['id'].'</br>';
echo "Name : ".$row['name'].'</br>';
echo "Name : ".$row['header'].'</br>';
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}

Вышеуказанное работает для одного параметра (имя), но когда я использую оператор AND, он не показывает результатов. URL-адрес приведен ниже.

http://www.mywebsite.com/page.php?id=2&name=xyz

-1

Решение

Как упоминается в документации, вам настоятельно рекомендуется использовать параметризованные запросы, например так:

$data = $conn->prepare('SELECT * FROM table WHERE name = :name AND id = :id');
$data->bindParam(":name", $name);
$data->bindParam(":id", $id);

Если это все еще не работает, я бы предложил выполнить аналогичный запрос непосредственно к вашей базе данных через phpMyAdmin или MySQL Workbench, чтобы убедиться, что запрос на самом деле что-то возвращает.

2

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

$data = $conn->prepare("SELECT * FROM table WHERE name = '$name' AND id <> '$id' ");

Приведенный выше код работал для меня.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector