Устранение неполадок с PDO и запросами — основное

Я конвертирую старый код 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-запрос в БД напрямую, он дает мне запись с тем же адресом электронной почты.

Какова ваша текущая производительность? С какими конкретными ошибками вы сталкиваетесь?

cegfault 17.02.2019 23:11

В настоящее время у меня ничего нет, тем временем, если я запускаю SQL-запрос в БД напрямую, я получаю запись, поскольку адрес электронной почты существует в БД.

TryHarder 17.02.2019 23:12

У тебя куча echo утверждений. Если вы не получаете никакого вывода, это либо проблема с веб-сервером, либо что-то еще в том, как выполняется код.

cegfault 17.02.2019 23:14

@cegfault спасибо за ваше время, я добавил результаты в вопрос. Еще раз спасибо.

TryHarder 17.02.2019 23:19

Вы должны ловить PDOException, а не Exception

Nick 18.02.2019 00:11

Спасибо вам за помощь.

TryHarder 18.02.2019 21:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
31
1

Ответы 1

Попробуйте следующее и используйте готовые операторы, такие как защита от SQL-инъекций.

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();

Я пробовал, и у меня ничего не было на экране. Я очень хочу узнать, как устранить неполадки, которые не работают. ОК, спасибо за ваш вклад. Я также добавлю бит элемента безопасности.

TryHarder 17.02.2019 23:21

Вы пытались включить отображение ошибок? ini_set('display_errors', 1);

a_e 17.02.2019 23:23

Преобразование массива в строку в... в строке 14 Массив

TryHarder 17.02.2019 23:32

Уведомление PHP дает подсказку, в чем проблема, пожалуйста, добавьте ошибку в описание, чтобы она могла помочь будущим читателям.

a_e 17.02.2019 23:38

Это было решением. Оказалось, что результатом является массив, и if == 1 не отвечает. Функция Print_r показала, что есть обратная связь.

TryHarder 17.02.2019 23:43

Сообщение об ошибке: преобразование массива в строку в /home/sites/public_html/test/test.php в строке 23.

TryHarder 17.02.2019 23:45

Да, он может возвращать массив, но выборку можно использовать с разными стилями выборки. Подобно PDO::FETCH_OBJ, он возвращает строку как анонимный объект с именами столбцов в качестве свойств;

a_e 17.02.2019 23:50

Другие вопросы по теме