Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Переменная в sql запросе на php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Название
JoStalin
Отправлено: 23 Июля, 2013 - 12:44:48
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Как правильно вставить переменную в конец sql запроса. Пробовал уже по разному.Смотреть варианты ответов
 
 Top
VenZell
Отправлено: 23 Июля, 2013 - 12:49:28
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




JoStalin, а что в самой переменной?
 
 Top
soffrick
Отправлено: 23 Июля, 2013 - 12:52:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)






-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
Fetis
Отправлено: 23 Июля, 2013 - 12:52:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012  
Откуда: Киров, Россия


Помог: 0 раз(а)






Подразумевается название таблицы, а не переменная. Курите: Как правильно строить запросы sql.

(Отредактировано автором: 23 Июля, 2013 - 12:54:17)

 
 Top
soffrick
Отправлено: 23 Июля, 2013 - 12:59:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




Fetis пишет:

Подразумевается название таблицы, а не переменная. Курите.

он выбирает все таблицы и в переменную как раз и попадает название таблицы

(Отредактировано автором: 23 Июля, 2013 - 13:00:06)



-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
JoStalin
Отправлено: 23 Июля, 2013 - 16:24:04
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




В переменной названия таблиц, если выводить их на экран, то будут по порядку названия всех таблиц данной бд
(Добавление)
var_dump выводит вот такой результат, user название таблицы, userstring(20) "SELECT * FROM `user`"
(Добавление)
сразу уточняю имена таблиц выводятся правильно, цикл тоже работает как надо, проблема лишь в синтаксисе sql запроса, а именно в переменной в этом запросе
(Добавление)
На всякий случай дублирую вопрос, Как правильно вставить переменную в конец sql запроса. Пробовал уже по разному.
Вот код в котором запрос:
$j=0;
$ret = array();
$r = mysql_query("SHOW TABLES");
while($row = mysql_fetch_array($r, MYSQL_NUM))
{
$ret[] = $row[0];
print_r($ret[$j]);
//$query = "SELECT * FROM `'$ret[$j]'`";
$result_1 = mysql_query("SELECT * FROM ".$ret[2]);

$j++;
Пробовал вот так:
"SELECT * FROM ".$ret[$j]
"SELECT * FROM ".$ret[$j]." "
"SELECT * FROM '.$ret[$j].' "
"SELECT * FROM `".$ret[$j]."` "
В общем по всякому, но работать не хочет.
 
 Top
imya
Отправлено: 23 Июля, 2013 - 16:38:52
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Если не хочет работать, то какие ошибки пишет?

В вашем массиве должны быть названия таблиц, как вам уже сказали. Вы сделали var_dump($ret) ?


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
JoStalin
Отправлено: 24 Июля, 2013 - 09:26:03
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




повторяюсь var_dump выводит вот такой результат, user название таблицы, userstring(20) "SELECT * FROM `user`", ошибки выводит такие Warning: Illegal string offset 'answer_1' in C:\xampp\htdocs\Interface_777\shtuka_2.php on line 53, Notice: Undefined index: answer_1 in C:\xampp\htdocs\Interface_777\shtuka_2.php on line 53, но они связаны с отсутсвием данных в массиве который должен содержать данные из бд, а так как имя таблицы(она же злополучная переменная) в запросе на эти данные я не могу указать правильно то и данные в массив не попадают. Если прописать в запросе просто имя таблицы, не в переменной а текстом, то все работает как надо.
 
 Top
imya
Отправлено: 24 Июля, 2013 - 09:43:25
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




А зачем вообще такие извращения, пользвольте поинтересоваться?


что выводит?


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
JoStalin
Отправлено: 24 Июля, 2013 - 09:53:30
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




imya пишет:
А зачем вообще такие извращения, пользвольте поинтересоваться?


что выводит?

выводит имена необходимых мне таблиц user user2 user3.
Что вы имеете ввиду под извращениями? Я просто с помощью циклов последовательно вывожу в таблицу на страничке браузера все данные из всех таблиц в указанной бд, если есть вариант проще и лучше предложите пожалуйста, я новичок в этом деле.
 
 Top
imya
Отправлено: 24 Июля, 2013 - 10:07:26
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Есть вариант попроще: одним запросом выбирайте данные из всех таблиц.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.*, t2.*,t3.* FROM table1 AS t1, table2 AS t2, table3 AS t4 WHERE какие-либо условия(если нужны)


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
soffrick
Отправлено: 24 Июля, 2013 - 10:10:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




PHP:
скопировать код в буфер обмена
  1. define('DB_NAME', 'forum');
  2. mysql_select_db(DB_NAME);
  3. $tables = mysql_query("SHOW TABLES");
  4. $data = array();
  5. while($table = mysql_fetch_assoc($tables))
  6. {
  7.         $tbl = $table['Tables_in_' . DB_NAME];
  8.         $result = mysql_query("SELECT * FROM $tbl");
  9.         while($row = mysql_fetch_assoc($result))
  10.         {
  11.                 $data[$tbl][] = $row;
  12.         }
  13. }
  14. printr($data);

(Добавление)

JoStalin
потратил менее 5 минут ...

(Отредактировано автором: 24 Июля, 2013 - 10:20:15)



-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
JoStalin
Отправлено: 24 Июля, 2013 - 10:16:22
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




imya пишет:
Есть вариант попроще: одним запросом выбирайте данные из всех таблиц.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.*, t2.*,t3.* FROM table1 AS t1, table2 AS t2, table3 AS t4 WHERE какие-либо условия(если нужны)

Такой вариант не подойдет потому, что количество таблиц заранее не известно.
(Добавление)
soffrick пишет:
PHP:
скопировать код в буфер обмена
  1. define('DB_NAME', 'forum');
  2. mysql_select_db(DB_NAME);
  3. $res = mysql_query("SHOW TABLES");
  4. $tables = array();
  5. while($table = mysql_fetch_assoc($res))
  6. {
  7.         $tables[] = $table['Tables_in_' . DB_NAME];
  8. }
  9. var_dump($tables);
  10. /*
  11.  
  12. array(3) {
  13.   [0]=>
  14.   string(4) "poll"
  15.   [1]=>
  16.   string(5) "posts"
  17.   [2]=>
  18.   string(6) "topics"
  19. }
  20.  
  21. */

(Добавление)

JoStalin
потратил менее 3ех минут ...

этот вариант сейчас попробую, хотя от моего он принципиально не особо отличается, понимаю что это оффтопик, но повторюсь проблем со списком таблиц у меня нет, при выводе массива с именами получается то что нужно, проблема только во вставке элементов этого массива в sql запрос.
 
 Top
soffrick
Отправлено: 24 Июля, 2013 - 10:21:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




JoStalin пишет:
этот вариант сейчас попробую, хотя от моего он принципиально не особо отличается, понимаю что это оффтопик, но повторюсь проблем со списком таблиц у меня нет, при выводе массива с именами получается то что нужно, проблема только во вставке элементов этого массива в sql запрос.

дебажить не пробовал?
PHP:
скопировать код в буфер обмена
  1. (
  2.     [Tables_in_forum] => poll
  3. )
  4. (
  5.     [Tables_in_forum] => posts
  6. )
  7. (
  8.     [Tables_in_forum] => topics
  9. )

значит нужно обращаться далеко не так $ret[2]
PHP:
скопировать код в буфер обмена
  1. $tbl = $ret['Tables_in_' . DB_NAME];
  2. $result = mysql_query("SELECT * FROM $tbl");

(Добавление)
JoStalin пишет:
тот вариант сейчас попробую

обновил его

(Отредактировано автором: 24 Июля, 2013 - 10:25:45)



-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
JoStalin
Отправлено: 24 Июля, 2013 - 11:02:10
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Дебажить не пробовал, так как каких то конкретных ошибок именно по sql запросу не выдает. пока не могу обьеденить твой код со своим, хотя я думаю это ничего не поменяет.
(Добавление)
soffrick пишет:
JoStalin пишет:
этот вариант сейчас попробую, хотя от моего он принципиально не особо отличается, понимаю что это оффтопик, но повторюсь проблем со списком таблиц у меня нет, при выводе массива с именами получается то что нужно, проблема только во вставке элементов этого массива в sql запрос.

дебажить не пробовал?
PHP:
скопировать код в буфер обмена
  1. (
  2.     [Tables_in_forum] => poll
  3. )
  4. (
  5.     [Tables_in_forum] => posts
  6. )
  7. (
  8.     [Tables_in_forum] => topics
  9. )

значит нужно обращаться далеко не так $ret[2]
PHP:
скопировать код в буфер обмена
  1. $tbl = $ret['Tables_in_' . DB_NAME];
  2. $result = mysql_query("SELECT * FROM $tbl");

(Добавление)
JoStalin пишет:
тот вариант сейчас попробую

обновил его

по поводу обращения к элементам массива, то в цикле выборки имен таблиц у меня указано что нужно составлять именно нумерованный массив, соответственно обращаться к элементам массивов нужно именно по номерам while($row = mysql_fetch_array($r, MYSQL_NUM))
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB