За последние 24 часа нас посетил 23191 программист и 1723 робота. Сейчас ищут 1786 программистов ...

Задать имя таблицы в SELECT из переменной

Тема в разделе "MySQL", создана пользователем МихаилГалузо, 23 фев 2017.

  1. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    Переменная как имя таблицы в запрсе mysql
    есть $table_cat=$rowf[title_table];- переменная с названием таблицы
    PHP:
    1. $result = mysql_query("SELECT * FROM $table_cat");
    Выдает ошибку. подскажите варианты синтаксиса или логики. Кто сталкивался.
     
    #1 МихаилГалузо, 23 фев 2017
    Последнее редактирование модератором: 24 фев 2017
  2. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    текст ошибки?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    $table_cat=$rowf['title_table'];
     
  4. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    $table_cat=$rowf['title_table']; - безрезультатно все равно ошибка. При echo $table_cat; выводит правильное название таблицы - spisok
    и при $result = mysql_query("SELECT * FROM spisok"); -правильно работает, а вот с $result = mysql_query("SELECT * FROM $table_cat"); - ошибка. Но, ошибку выдает на строку $rez = mysql_fetch_assoc($result);
     
  5. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    текст ошибки то какой??
     
  6. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    Да ошибка такая при абсолютном задании названия таблицы, выборка с БД проходит, через переменную программа не видит название таблицы.
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:
     
  7. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    query False возвращает.Попробуй банальную отладку запроса сделать:
    PHP:
    1. echo "SELECT * FROM $table_cat";
    Часто помогает понять что именно query отправляет.И на будущее как минимум используй mysqli.
     
  8. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    Вывело просто - SELECT * FROM . Однако при echo $table_cat; выводит правильное название таблицы - spisok
     
  9. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Ну вот видишь,дело тут не в функции.Давай дальше смотреть.Попробуй в целях опять же отладки сделать так:
    PHP:
    1. $table_cat = 'spisok';
    2. echo "SELECT * FROM $table_cat";
     
  10. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    и так:
    PHP:
    1. $t = 'spisok';
    2. echo "SELECT * FROM $t";
    3. echo "SELECT * FROM ".$t;
     
  11. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    Ребят спасибо за поддержку пробую, ходил в магазин - отвлекся.
     
  12. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    Без результата. В двух вариантах выдает - SELECT * FROM
     
  13. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    А так что выдает?
    PHP:
    1. $t = 'spisok';
    2. echo $t;
     
  14. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    Так выдает - spisok
     
  15. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Опять гадание на кофейной гуще... У вас проблема совсем не там, где вам кажется и пока вы не приведете код от момента где задается имя таблицы и до момента выполнения запроса, при чем без всяких сокращений и вырезок - ничего не выйдет.
     
  16. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    А так?
    PHP:
    1. $t = 'spisok';
    2. echo 'SELECT * FROM '.$t;
     
  17. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    PHP:
    1. <?php
    2.      $teble_cat=$rowf[title_table];
    3. function selectCat(){
    4. $result = mysql_query("SELECT * FROM $teble_cat");
    5. $cauntries = array();
    6.  
    7. while ($row = mysql_fetch_array($result)) {
    8.  
    9.     $cauntries[ ] = $row;
    10.      }
    11.    return $cauntries;
    12. }
     
    #17 МихаилГалузо, 24 фев 2017
    Последнее редактирование модератором: 25 фев 2017
  18. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код (Text):
    1. $rowf[spisok];
    А это откуда берется?
     
  19. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Может ТС просто значение в функцию не передает?)
     
  20. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Не, ну и это тоже. Но давай по порядку ))
     
  21. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    С подборкой вариантов я не правильно написал не $rowf[spisok]; а $rowf[title_table]; - а берется с основного тела программы
    PHP:
    1. $box = ($_GET["box"]);
    2. $resultf = mysql_query("SELECT * FROM box_cat WHERE  id_box = '$box'");
    3.                $rowf = mysql_fetch_array($resultf);
    --- Добавлено ---
    $teble_cat=$rowf[title_table];
    echo $teble_cat; выдает название таблицы spisok
     
    #21 МихаилГалузо, 24 фев 2017
    Последнее редактирование модератором: 25 фев 2017
  22. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Ну тогда видимо я был прав.Пробуй так
    PHP:
    1. $teble_cat=$rowf[title_table];
    2. function selectCat($cat){
    3. $result = mysql_query("SELECT * FROM $cat");
    4. $cauntries = array();
    5.  
    6. while ($row = mysql_fetch_array($result)) {
    7.  
    8. $cauntries[ ] = $row;
    9. }
    10. return $cauntries;
    11. }
    12. /////
    13. selectCat($teble_cat);
     
    #22 alexblack, 24 фев 2017
    Последнее редактирование: 24 фев 2017
  23. МихаилГалузо

    МихаилГалузо Новичок

    С нами с:
    11 янв 2017
    Сообщения:
    29
    Симпатии:
    0
    $teble_cat=$rowf[title_table];
    echo $teble_cat; выдает название таблицы spisok
    В результате Fatal error: Call to undefined function selectCat() inZ:
    Возможно с selectCat($teble_cat); нужно покрутить
    --- Добавлено ---
    Чуть покрутил в место положении выдало - Warning: Missing argument 1 for selectCat(), called in Z:
    и Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z: