Я новичок в PDO и нахожусь в процессе обновления приложения от mysql_query до PDO.Это, конечно, глупый вопрос - но я надеюсь, что кто-то может помочь мне обдумать это.
Мне нужно посмотреть, есть ли у запроса PDO какие-либо данные: - если нет, выдаст ошибку - еслиэто так, извлечение этих данных
Я мог бы сделать это легко с mysql_num_rows, но это устарело, как мы все знаем.
Проблема в том, что, как только я проверил, есть ли какие-либо данные, ябольше не может получить его.
Проверка выполняется нормально, но затем при попытке получить фактический результат она пуста.Конечно, я могу выполнить запрос еще раз после проверки, но я бы предпочел не выполнять запрос дважды.
try
{
$result = $pdo2->prepare("SELECT first_name FROM users WHERE email = :email;");
$result->bindValue(':email', $email);
$result->execute();
$data = $result->fetchAll();
}
catch (PDOException $e)
{
$error = 'Error fetching user: ' . $e->getMessage();
echo $error;
exit();
}
if (!$data) {
echo "No data!";
} else {
echo "Data found!";
}
$row = $result->fetch();
echo "First name: " . $row['first_name'];
Как я могу решить эту проблему?Я попытался присвоить $ result другой переменной ($ test = $ result), а затем вместо этого запустить проверку данных для переменной $ test - но даже в этом случае переменная $ result STILL не возвращает никаких данных после выполнения проверки (смотрите закомментированные строки):
try
{
$result = $pdo2->prepare("SELECT first_name FROM users WHERE email = :email;");
$result->bindValue(':email', $email);
$result->execute();
$test = $result; // Duplicating the variable
$data = $test->fetchAll(); // Running the check on the duplicated variable
}
catch (PDOException $e)
{
$error = 'Error fetching user: ' . $e->getMessage();
echo $error;
exit();
}
if (!$data) {
echo "No data!";
} else {
echo "Data found!";
}
$row = $result->fetch(); // Still doesn't return the result!
echo "First name: " . $row['first_name'];
Это действительно делает мою голову ... Я думаю, что где-то есть простое решение, я просто не вижу его.Пожалуйста, помогите!