Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550

SQL, использовать переменную в качестве имени таблицы

19.11.2013, 06:58. Показов 3585. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
mysql_query("INSERT INTO $_var (id) VALUES ('$id')");
Понятно что так работать не может, интересно как тут использовать PREPARE и EXECUTE.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2013, 06:58
Ответы с готовыми решениями:

Как из php передать в sql переменную, как название новой таблицы?
Нужно создавать новую таблицу с именем которое передаст php скрипт $host='localhost'; // имя хоста $database='test'; // имя базы данных...

Как использовать строку в качестве имени
Подскажите как можно описать следующие textBox1.KeyPress += textBox_KeyPress; textBox2.KeyPress += textBox_KeyPress; ..... ...

Как использовать строку в качестве имени файла
суть задачи такова: ввожу с клавиатуры строку к примету text.txt и в дальнейшем должна использоваться как имя файла который я открой через...

7
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
22.11.2013, 11:38  [ТС]
ап чтоли
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.11.2013, 15:05
Цитата Сообщение от UnsKneD Посмотреть сообщение
Понятно что так работать не может
Нет, не понятно. Почему это вдруг не может?
1
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
22.11.2013, 15:11
id - он же обычно INT, одинарные кавычки уберите - тогда будет работать. а так вы числовому полю пытаетесь текст присвоить - sql на такое обычно ругается
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.11.2013, 00:31
Цитата Сообщение от Alex_VP Посмотреть сообщение
sql на такое обычно ругается
обычно ему на такое пофигу, он преобразовывает в число и все
1
алкокодер
 Аватар для UnsKneD
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
23.11.2013, 04:57  [ТС]
Alex_VP, а мне не id нужен, id - целое, мне нужно подставлять разные названия таблиц.

Добавлено через 2 часа 29 минут
Вопрос решён, всем спасибо!

вот что было нужно
PHP
1
2
3
4
session_start();
    $id = $_POST['id'];
    $login = $_SESSION['login'];
    mysql_query("INSERT INTO {$login} (id) VALUES ($id)");
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
24.11.2013, 15:58
Цитата Сообщение от KOPOJI Посмотреть сообщение
обычно ему на такое пофигу, он преобразовывает в число и все
не, не пофиг... неоднократно уже натыкался на это, когда виной всему были одинарные кавычки (отсутствие их для текстового значения, и присутствие при числовом значении) в запросе. Поэтому теперь всегда, если что-то не срабатывает - в первую очередь смотрю на них. Почему? да потому что id=2 совсем не то же, что id='2'. Не помню точно сейчас, с чем там id сравнивается, то ли с кодом литеры '2', то ли ещё с чем, но однозначно не имеющем значение 2.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.11.2013, 16:10
Цитата Сообщение от Alex_VP Посмотреть сообщение
Почему? да потому что id=2 совсем не то же, что id='2'. Не помню точно сейчас, с чем там id сравнивается, то ли с кодом литеры '2', то ли ещё с чем, но однозначно не имеющем значение 2.
У кого то видел подпись "Если вы не знаете, как это работает, то, возможно, это и не работает". В вашем случае наоборот - если вы не знаете, как это работает, это не значит, что это не работает.
Я говорю, ему на это пофигу, он преобразует в число. Тоже самое, что и в php, будет произведено неявное приведение типов. Прежде чем уверять в чем-то, сначала попробуйте выполнить, ок?
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
mysql> USE `test`;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> SELECT * FROM `users`;
+---------+-------+------+-----------------+--------+
| user_id | login | pass | activation_code | status |
+---------+-------+------+-----------------+--------+
|       1 | test  | test | test            |      1 |
|       4 | test1 | test | test            |      1 |
|       5 | test2 | test | test            |      1 |
|       6 | test3 | test | test            |      1 |
+---------+-------+------+-----------------+--------+
4 rows in set (0.00 sec)
 
mysql> SHOW WARNINGS;
Empty set (0.00 sec)
 
mysql> SELECT * FROM `users` WHERE `user_id` = 4;
+---------+-------+------+-----------------+--------+
| user_id | login | pass | activation_code | status |
+---------+-------+------+-----------------+--------+
|       4 | test1 | test | test            |      1 |
+---------+-------+------+-----------------+--------+
1 row in set (0.00 sec)
 
mysql> SHOW WARNINGS;
Empty set (0.00 sec)
 
mysql> SELECT * FROM `users` WHERE `user_id` = '4';
+---------+-------+------+-----------------+--------+
| user_id | login | pass | activation_code | status |
+---------+-------+------+-----------------+--------+
|       4 | test1 | test | test            |      1 |
+---------+-------+------+-----------------+--------+
1 row in set (0.00 sec)
 
mysql> SHOW WARNINGS;
Empty set (0.00 sec)
 
mysql> SELECT * FROM `users` WHERE `user_id` = 'f';
Empty set (0.00 sec)
 
mysql> SHOW WARNINGS;
Empty set (0.00 sec)
 
mysql> SELECT * FROM `users` WHERE `user_id` = f;
ERROR 1054 (42S22): Unknown column 'f' in 'where clause'
mysql> SHOW WARNINGS;
+-------+------+--------------------------------------+
| Level | Code | Message                              |
+-------+------+--------------------------------------+
| Error | 1054 | Unknown column 'f' in 'where clause' |
+-------+------+--------------------------------------+
1 row in set (0.00 sec)
 
mysql>
Добавлено через 3 минуты
Даже вот вам точнее пример. Несмотря на предупреждение в запросе, он будет выполнен, строка будет приведена к целому типу
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mysql> UPDATE `users` SET `status` = 0 WHERE `user_id` IN (5,6);
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2  Changed: 2  Warnings: 0
 
mysql> SELECT * FROM `users`;
+---------+-------+------+-----------------+--------+
| user_id | login | pass | activation_code | status |
+---------+-------+------+-----------------+--------+
|       1 | test  | test | test            |      1 |
|       4 | test1 | test | test            |      1 |
|       5 | test2 | test | test            |      0 |
|       6 | test3 | test | test            |      0 |
+---------+-------+------+-----------------+--------+
4 rows in set (0.00 sec)
 
mysql> SELECT * FROM `users` WHERE `status` = 'f';
+---------+-------+------+-----------------+--------+
| user_id | login | pass | activation_code | status |
+---------+-------+------+-----------------+--------+
|       5 | test2 | test | test            |      0 |
|       6 | test3 | test | test            |      0 |
+---------+-------+------+-----------------+--------+
2 rows in set, 1 warning (0.00 sec)
 
mysql> SHOW WARNINGS;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'f' |
+---------+------+---------------------------------------+
1 row in set (0.00 sec)
 
mysql>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2013, 16:10
Помогаю со студенческими работами здесь

Не удаётся использовать переменную в качестве размерности массива
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Дело в том, что я в массиве(векторе) в качестве размерности попытался...

Как в getExtra использовать стринговую переменную в качестве параметра?
Имею: Button button1 = (Button)findViewById(R.id.buttonone); button1.setOnClickListener(new OnClickListener() { ...

Как создать переменную типа int исспользуя в качестве имени значение строковой переменной.
есть переменная типа string в которой допустим хранится значение: "file001" как объявить\создать переменную типа int исспользуя в...

Как правильно использовать переданное значение кнопки в качестве имени селекта?
есть такая функция function chek( idn ) { sel=document.f3.ustr.value document.f3.sel.disabled=false } есть радио кнопки,...

Почему нельзя использовать имя целочисленной переменной в качестве имени целочисленного массива?
помогите разобраться #include <iostream> using namespace std; int main () { int *array; array; // имя массива есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru