Nano Hash - криптовалюты, майнинг, программирование

Не могу понять эту проблему с bindParam

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

Следующий код запускается, но ничего не возвращает.

try {
    $dbh = new PDO('mysql:host=localhost;dbname=banim', 'root', '');
    $uName = "banim";       //$_POST['uName'];
    $email = "[email protected]";            //$_POST['email'];
    $query = $dbh->prepare("SELECT * from users WHERE email = :email OR WHERE uName = :name");
    $query->setFetchMode(PDO::FETCH_ASSOC);
    $query->bindParam(":name", $uName);
    $query->bindParam(":email", $email);
    $query->execute();
    foreach ($query as $row) {
        print_r($query);
    }
} catch (PDOException $e) {
    echo "PDOException: " . $e->getMssage() . PHP_EOL;
}
28.03.2019

  • измените print_r($query); на print_r($row); и посмотрите 28.03.2019
  • Ваш $query - это класс операторов PDO, а не массив. Вам нужно получить результат. Например, с помощью fetchAll(). 28.03.2019
  • Результаты @KIKOSoftware PDO итерируются для удобства. 29.03.2019
  • @deceze: я понимаю, что ты имеешь в виду. Где это в мануале? Я не могу найти это. Лучшее, что я могу найти, это введение класса PDOStatement: представляет подготовленный оператор и, после выполнения оператора, связанный с ним результирующий набор, но это не очень ясно. 29.03.2019
  • @KIKO PDOStatement задокументирован как implements Traversable, и в руководстве есть один пример: php.net/manual/en/pdo.connections.php#example-1027. Но да, это не очень очевидно, я думаю. 29.03.2019
  • @deceze: Да, я пропустил эти две подсказки, но это полезно знать. Спасибо. Интерфейс Traversable действительно кажется чем-то вроде аномалии, но я понимаю, почему они его создали. 29.03.2019

Ответы:


1

То, что написал Alive To Die, было правильным, и в строке SQL также было дополнительное WHERE, которое также испортило ответ, это окончательный код:

try {
    $dbh = new PDO('mysql:host=localhost;dbname=banim', 'root', '');
    $uName = "banim";       //$_POST['uName'];
    $email = "[email protected]";            //$_POST['email'];
    $query = $dbh->prepare("SELECT * from users WHERE email = :email OR uName = :name");
    $query->setFetchMode(PDO::FETCH_ASSOC);
    $query->bindParam(":name", $uName);
    $query->bindParam(":email", $email);
    $query->execute();
    while($row = $query->fetch()){
        print_r($row);
    }
} catch (PDOException $e) {
    echo "PDOException: " . $e->getMssage() . PHP_EOL;
}
28.03.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..