За последние 24 часа нас посетили 20253 программиста и 1084 робота. Сейчас ищут 738 программистов ...

PDO как подставить в sql запросс свою переменную

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

  1. primitiv

    primitiv Активный пользователь

    С нами с:
    22 ноя 2018
    Сообщения:
    40
    Симпатии:
    0
    Приветствую господа, вот есть у меня запрос к базе данных, как подставить в данный запрос переменную в которой храниться имя таблицы в базе

    PHP:
    1. $result = $pdo->query('SELECT * FROM $catalog[0]')->fetchAll(PDO::FETCH_ASSOC);  
    я уже по всякому пробовал но не выходить, даже использовал другой тип запроса но и он не срабатывает

    PHP:
    1. $dump =$pdo->prepare("SELECT*FROM $catalog[0] ORDER BY `name`");
    2. $dump ->execute();
    3. $array =$dump ->fetchAll(PDO::FETCH_ASSOC);
    Мне нужно получить все строки с данной таблицы, заранее спасибо
    --- Добавлено ---
    Собственно текст ошибки:
    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY `id` = ?' at line 1 in C:\OSPanel\domains\localhost\catalog.php:236 Stack trace: #0 C:\OSPanel\domains\localhost\catalog.php(236): PDO->prepare('SELECT * FROM ...') #1 C:\OSPanel\domains\localhost\catalog.php(89): page_sourse_3('<!DOCTYPE html>...', 'acm001') #2 {main} thrown in C:\OSPanel\domains\localhost\catalog.php on line 236
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    PHP:
    1. $query = sprintf('SELECT * FROM `%s` ORDER BY `name`', $catalog[0]);
     
    primitiv нравится это.
  3. primitiv

    primitiv Активный пользователь

    С нами с:
    22 ноя 2018
    Сообщения:
    40
    Симпатии:
    0
    Не срабатывает, попробовал так:

    PHP:
    1. $result = $pdo->query(sprintf('SELECT * FROM `%s` ORDER BY `name`', $catalog[0]))->fetchAll(PDO::FETCH_ASSOC);  
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Что содержит $catalog[0]?
     
    primitiv нравится это.
  5. primitiv

    primitiv Активный пользователь

    С нами с:
    22 ноя 2018
    Сообщения:
    40
    Симпатии:
    0
    Название таблицы
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    ОК.
    Скопируйте выведенный с помощью
    Код (Text):
    1. echo  sprintf('SELECT * FROM `%s` ORDER BY `name`', $catalog[0]);
    и выполните его в PMA.
     
    primitiv нравится это.
  7. primitiv

    primitiv Активный пользователь

    С нами с:
    22 ноя 2018
    Сообщения:
    40
    Симпатии:
    0
    Прикол, не понимаю что за фигня

    SELECT * FROM `` ORDER BY `name`

    Получается $catalog[0] пустой?
     
  8. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
  9. primitiv

    primitiv Активный пользователь

    С нами с:
    22 ноя 2018
    Сообщения:
    40
    Симпатии:
    0
    Спасибо, вы сегодня мне второй раз помогли, я походу от недосыпа жутка туплю
     
  10. BAbl_gun

    BAbl_gun Новичок

    С нами с:
    25 апр 2020
    Сообщения:
    32
    Симпатии:
    2
    Разве там не нужно было использовать плейсхолдер?
     
  11. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Там?
     
  12. BAbl_gun

    BAbl_gun Новичок

    С нами с:
    25 апр 2020
    Сообщения:
    32
    Симпатии:
    2
    $cat = $catalog[0]
    $dump =$pdo->prepare("SELECT*FROM 'cat' = ?");
    $dump ->execute([$cat]);
    $array =$dump ->fetchAll(PDO::FETCH_ASSOC);[/php]
    Не тестил, так что по итогу может будет шляпа )
     
  13. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Да, шляпа.
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    @BAbl_gun, за лайк в др. теме так уж и быть протру вам глаза :)

    У ТСа просто FROM `cat`, а то что вы подумали – это выборка с условием FROM `cat` WHERE `cat_field`=? ;)
     
    BAbl_gun нравится это.