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

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

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

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

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

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

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

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

7
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
22.11.2013, 11:38  [ТС] 2
ап чтоли
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.11.2013, 15:05 3
Цитата Сообщение от UnsKneD Посмотреть сообщение
Понятно что так работать не может
Нет, не понятно. Почему это вдруг не может?
1
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
22.11.2013, 15:11 4
id - он же обычно INT, одинарные кавычки уберите - тогда будет работать. а так вы числовому полю пытаетесь текст присвоить - sql на такое обычно ругается
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.11.2013, 00:31 5
Цитата Сообщение от Alex_VP Посмотреть сообщение
sql на такое обычно ругается
обычно ему на такое пофигу, он преобразовывает в число и все
1
алкокодер
157 / 153 / 41
Регистрация: 27.12.2012
Сообщений: 550
23.11.2013, 04:57  [ТС] 6
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 7
Цитата Сообщение от KOPOJI Посмотреть сообщение
обычно ему на такое пофигу, он преобразовывает в число и все
не, не пофиг... неоднократно уже натыкался на это, когда виной всему были одинарные кавычки (отсутствие их для текстового значения, и присутствие при числовом значении) в запросе. Поэтому теперь всегда, если что-то не срабатывает - в первую очередь смотрю на них. Почему? да потому что id=2 совсем не то же, что id='2'. Не помню точно сейчас, с чем там id сравнивается, то ли с кодом литеры '2', то ли ещё с чем, но однозначно не имеющем значение 2.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.11.2013, 16:10 8
Цитата Сообщение от 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
24.11.2013, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2013, 16:10
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru