За последние 24 часа нас посетили 20664 программиста и 1106 роботов. Сейчас ищут 335 программистов ...

запрос не находит запись

Тема в разделе "PHP и базы данных", создана пользователем kupferrabe, 11 ноя 2021.

Метки:
  1. kupferrabe

    kupferrabe Новичок

    С нами с:
    10 ноя 2021
    Сообщения:
    3
    Симпатии:
    0
    PHP, MySQL на локальном сервере XAMPP.

    в базе есть таблица с токенами и некоторыми данными к ним.
    пытаюсь получить запись по токену, методом Token->getByToken()
    а получаю NULL ($data == NULL)

    причем метод Token->getAll() работает в другом месте...

    index.php:
    PHP:
    1.     include_once './api/inc/database.inc';
    2.     include_once './api/inc/token.inc';
    3.  
    4.     $database = new Database();
    5.     $db = $database->getConnection();
    6.     $item = new Token($db);
    7.     $item->token = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
    8.     $data = $item->getByToken();
    token.php
    PHP:
    1. class Token{
    2.     private $conn;
    3.     private $db_table = "geo_token";
    4.  
    5.     public $id;
    6.     public $token;
    7.     // ... другие поля
    8.  
    9.     public function __construct($db){
    10.        $this->conn = $db;
    11.     }
    12.  
    13.     public function getAll(){
    14.         $sqlQuery = "SELECT * FROM" . $this->db_table;
    15.         $stmt = $this->conn->prepare($sqlQuery);
    16.         $stmt->execute();
    17.         return $stmt;
    18.     }
    19.     public function getByToken(){
    20.         $sqlQuery = "SELECT * FROM ". $this->db_table ." WHERE token = ? LIMIT 0,1";
    21.         $stmt = $this->conn->prepare($sqlQuery);
    22.         $stmt->bindParam(1, $this->token);
    23.         $stmt->execute();
    24.  
    25.         $dataRow = $stmt->fetch(PDO::FETCH_ASSOC);
    26.          
    27.         $this->id = $dataRow['id'];
    28.         $this->token = $dataRow['token'];
    29.         //... другие поля
    30.     }
    31.     //... другие методы
    32. }
    помогите, пожалуйста.
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @kupferrabe
    1. Для чего переопределять значение свойства, по которому выполняется поиск?
    2. Где и как инициализируется свойство db_table?
    3. Не слишком накладно выходит при каждом вызове метода выполнять подготовку запроса?
    4. Метод getByToken() что-нибудь возвращает?
     
  3. kupferrabe

    kupferrabe Новичок

    С нами с:
    10 ноя 2021
    Сообщения:
    3
    Симпатии:
    0
    @Sail
    ошибка найдена - в запросе стояло вместо "...WHERE token = ..." "...WHERE id = ...", т.к. копировалось из другого места, но новый вариант не был записан.

    1. неправильно но не мешает
    2. в строке 3.
    3. да накладно, но тоже пока не мешает
    4. возможно getByToken() неудачное имя для метода. здесь просто заполняются поля обьекта.

    мне тоже не нравится этод код... но хотелось по быстрому запустить чтоб работало а потом подправить

    вообще-то мне нужно очень простой функционал:
    1. писать, читать, стирать записи в одну таблицу на сервере (с фронтенда через ajax и на сервере просто через обьект )
    2. одину страничку закрыть на пароль.

    если бы я нашел какую простую библиотеку/фреймоворк не городил бы свои велосипеды.
    но садится изучать, устанавливать - symfony, laravel & Co... из за пары строчек кода...
    слышал есть headless cms. даже записи в google-таблицы мне бы подошли.

    можете посоветовать простое готовое решение?
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Не странно?
     
  5. kupferrabe

    kupferrabe Новичок

    С нами с:
    10 ноя 2021
    Сообщения:
    3
    Симпатии:
    0
    @Sail
    да, это лишнее.
    спасибо за разбор кода.