Я конвертирую старый код php 5.6 в 7.2 и изучаю, как использовать PDO. Я достиг точки, когда я застрял и хотел бы учиться у сообщества.
Я создал структуру тестового файла:
БД.php:
<?php
try {
$conn = new PDO($initlocation, $username, $pwdata);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "worked"; // THIS WORKS ON THE SCREEN
}
catch(PDOException $e){
echo "Connection failed: " . $e->getMessage();
}
?>
test.php:
<?php
include("db.php");
$user_query='SELECT * FROM `users` WHERE `email` = "[email protected]"';
echo $user_query; // I GET THE QUERY PRINTED ON THE SCREEN
echo is_object($conn); // THIS IS 1 WHICH IS GOD
echo "<br>";
echo is_object($res); // THIS IS 1 WHICH IS ODD
try{
$res = $conn->query($user_query);
}
catch (Exception $e){
echo "Query failed: " . $e->getMessage(); // NOTHING
}
echo "<br>";
echo is_object($res); // NOTHING
$data_exists = $res->fetch();
if ($data_exists==1) echo "yes"; // NOTHING
?>
Я также оставил метод тестирования в коде и очень хочу найти лучшее решение, чтобы выяснить, почему запрос ничего не показывает.
Цель состояла бы в том, чтобы найти адрес электронной почты в БД и дать мне отзыв о нем. Заранее спасибо всем комментариям буду учиться только по ним.
Дополнительная информация: Когда я запускаю SQL-запрос в БД напрямую, он дает мне запись с тем же адресом электронной почты.
В настоящее время у меня ничего нет, тем временем, если я запускаю SQL-запрос в БД напрямую, я получаю запись, поскольку адрес электронной почты существует в БД.
У тебя куча echo утверждений. Если вы не получаете никакого вывода, это либо проблема с веб-сервером, либо что-то еще в том, как выполняется код.
@cegfault спасибо за ваше время, я добавил результаты в вопрос. Еще раз спасибо.
Вы должны ловить PDOException, а не Exception
Спасибо вам за помощь.






Попробуйте следующее и используйте готовые операторы, такие как защита от SQL-инъекций.
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();
Я пробовал, и у меня ничего не было на экране. Я очень хочу узнать, как устранить неполадки, которые не работают. ОК, спасибо за ваш вклад. Я также добавлю бит элемента безопасности.
Вы пытались включить отображение ошибок? ini_set('display_errors', 1);
Преобразование массива в строку в... в строке 14 Массив
Уведомление PHP дает подсказку, в чем проблема, пожалуйста, добавьте ошибку в описание, чтобы она могла помочь будущим читателям.
Это было решением. Оказалось, что результатом является массив, и if == 1 не отвечает. Функция Print_r показала, что есть обратная связь.
Сообщение об ошибке: преобразование массива в строку в /home/sites/public_html/test/test.php в строке 23.
Да, он может возвращать массив, но выборку можно использовать с разными стилями выборки. Подобно PDO::FETCH_OBJ, он возвращает строку как анонимный объект с именами столбцов в качестве свойств;
Какова ваша текущая производительность? С какими конкретными ошибками вы сталкиваетесь?