Первый вопрос по коду:
$sql = "SELECT COUNT(*) FROM `guests`";
if ($STH = $pdo->query($sql)) {
if ($STH->fetchColumn() > 0) {
echo "Есть данные";
}
else {
echo "Нет данных";
}
}
Я туплю и никак не могу понять как мне получить объект или переменную непосредственно с количеством строк, т.е. сколько их 10, 20, 30?
Второй вопрос: почему первый вариант работает, а второй где я пытаюсь биндить параметры не работает. И почему работает первый вариант ведь в нём нет $value->execute();
Первый
$value = $pdo->query("SELECT * FROM `guests` WHERE id=7 ");
if($Row = $value->fetch(PDO::FETCH_ASSOC)) {
print_r($Row);
}
Второй
$id = 7;
$value = $pdo->query("SELECT * FROM `guests` WHERE id=:id ");
$value->bindParam(":id",$id);
if($Row = $value->fetch(PDO::FETCH_ASSOC)) {
print_r($Row);
}
"Второй" вариант - это вы пытаетесь использовать подготовленный запрос. Делается это так:
$id = 7;
$stmt = $pdo->prepare("SELECT * FROM `guests` WHERE id=:id ");
$stmt->bindParam(":id", $id);
$stmt->execute();
if($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
Про количества строк. По умолчанию PDO работает с курсором в БД и до момента извлечения всех строк их количество(в большинстве случаев) неизвестно. Вы можете использовать, например, fetchAll() и работать с результирующим набором как с массивом
Сборка персонального компьютера от Artline: умный выбор для современных пользователей