Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
MySQL

Внешний ключ

20.05.2018, 19:18. Показов 1603. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть две таблицы User и Konsultachii

PHP
1
2
3
4
5
6
7
8
9
<?php 
include_once "connection.php";
session_start();
$id1="SELECT id FROM User WHERE User.id=$_SESSION['id']";
echo $id1;
$query ="INSERT INTO Konsultachii VALUES(0,'".$_POST['$id1']."','".$_POST['name']."','".$_POST['tel']."','".$_POST['text']."')";
$result = mysqli_query($connection,$query) or die("Ошибка создания регистрации пользователя ".mysqli_error($connection));
echo $query;
?>

Нужно чтобы заполнилось поле id_user в таблице Konsultachii
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2018, 19:18
Ответы с готовыми решениями:

Внешний ключ
Имеются 3 таблицы: CREATE TABLE usr ( usr_id int AUTO_INCREMENT NOT NULL, first varchar(25) NOT NULL, ...

Не создается внешний ключ.
Всем привет. Создаю две таблицы, в первой первичный ключ, во второй внешний ключ со ссылкой на этот первичный ключ. Добавляю данные в...

insert не зная на какой id ссылается внешний ключ
Здравствуйте! Есть 2 таблицы c полями id | name и id | year | id_tbl1(внешний ключ на 1 таблицу), id в обеих таблицах auto incr. Как...

16
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
20.05.2018, 19:19  [ТС]
Схема БД
Миниатюры
Внешний ключ  
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 20:24
Sasha2000, 4-я строка подозрительная: по виду это sql запрос, почему его дальше не используете; а что такое User.id? Синтаксис этой строки неправильный, апострофы точно вызовут ошибку, нужно через точки переменную из сессии вносить. В 6-й строке Вы не указали названия столбцов, а только значения.
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
20.05.2018, 20:28  [ТС]
User.id - название таблица и ее столбца

Я просто не знаю как в эту строку записать id пользователя. Строка правильная и работает если удалить этот столбец

PHP
1
$query ="INSERT INTO Konsultachii VALUES(0,'".$_POST['$id1']."','".$_POST['name']."','".$_POST['tel']."','".$_POST['text']."')";
Вот этим листингом я путалась получить значение id пользователя

PHP
1
2
$id1="SELECT id FROM User WHERE User.id=$_SESSION['id']";
echo $id1;
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 21:53
Sasha2000, для начала откуда берётся id пользователя. Второе, что Вы хотите извлечь из таблицы User. И третий вопрос, что нужно занести в таблицу Konsultacii.
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
20.05.2018, 21:58  [ТС]
id пользователя я беру из сессии, т е это id пользователя который выполнил вход на сайт.

Этот же id равен полю id в таблице User и он является внешним ключевым полем для таблицы Konsultachii (поле id_user).

В таблицу Konsultacii заносится значение поля id в таблицы User вошедшего на сайт пользователя и значения считанные с формы.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 22:38
Sasha2000, те id это переменная $_SESSION['id']. Второй вопрос пока без ответа - что Вы хотите извлечь из таблицы User? Потом перейдём к 3-у вопросу.
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
20.05.2018, 22:44  [ТС]
1 Да, находится в $_SESSION['id']

2. Поскольку когда я записываю переменную $_SESSION['id'] у меня была ошибка, то я решила сделать запросом к таблице User, но все равно не работает. В переменной $_SESSION['id'] находится цифра 1

3. В таблицу Konsultacii.

PHP
1
$query ="INSERT INTO Konsultachii VALUES(0,'".$_POST['$id1']."','".$_POST['name']."','".$_POST['tel']."','".$_POST['text']."')";
1 поле - id
2 поле - $_SESSION['id']
3, 4, 5 - считываются с формы
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 23:09
Sasha2000, так, строку session_start() в файле поставить вначале. Далее строки 4-5 убрать. Потом строки 6-8 заменить на вот это:

PHP
1
2
3
4
5
6
$id = $_SESSION['id'];
$name = $_POST['name'];
$tel = $_POST['tel'];
$text = $_POST['text'];
$query = "INSERT INTO Konsultachii ('название столбца для id', 'название столбца для name', 'название столбца для tel', 'название столбца для text') VALUES ($id, $name, $tel, $text)";
mysqli_query($connection, $query);
В первых скобка sql запроса замените апострофы обратными кавычками и название таблицы Konsultachii тоже в обратные кавычки.
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
21.05.2018, 17:38  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
<?php 
include_once "connection.php";
$id = $_SESSION['id'];
$name = $_POST['name'];
$tel = $_POST['tel'];
$text = $_POST['text'];
$query = "INSERT INTO Konsultachii ('id', 'id_user', 'Name', 'Phone','Text') VALUES (0, $id, $name, $tel, $text)";
$result = mysqli_query($connection,$query) or die("Ошибка создания регистрации пользователя ".mysqli_error($connection));
echo $query;
?>
Ошибка создания регистрации пользователя You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''id', 'id_user', 'Name', 'Phone','Text') VALUES (0, 1, выаыва, ывпва' at line 1


Я так поняла что неправильные кавычки?

Добавлено через 5 минут
Может дело в форме?

PHP
1
2
3
4
5
6
7
8
9
<form action="mail.php" method="POST">
<label>Название</label><br>
<input type="text" name="name" size="50"><br>
<label>Телефон для связи</label><br>
<input type="text" name="tel" size="15"><br>
<label>Сопросодительное письмо</label><br>
<textarea name="text" cols="100" rows="10"></textarea></p>
<input type="submit" name="submit" value="Отправить письмо">
</form>
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
21.05.2018, 17:46
Sasha2000, не, дело не в форме. Вам нужно попробовать заменить на обратные кавычки в 7 строке, вот так:

PHP
1
$query = "INSERT INTO `Konsultachii` (`id`, `id_user`, `Name`, `Phone`, `Text`) VALUES (0, $id, $name, $tel, $text)";
Кстати, а почему id у Вас 0?
1
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
21.05.2018, 18:00
Цитата Сообщение от Sasha2000 Посмотреть сообщение
$name, $tel, $text
Наверное строковые типы данных? Тогда их нужно а одинарные кавычки завернуть:
PHP
1
$query = "INSERT INTO Konsultachii (`id`, `id_user`, `Name`, `Phone`, `Text`) VALUES (NULL, '$id', '$name', '$tel', '$text')";
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
21.05.2018, 19:08  [ТС]
atanov
Ошибка создания регистрации пользователя You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'вечер!)' at line 1

Это в форме поле

PHP
1
<textarea name="text" cols="100" rows="10"></textarea></p>
Может с ним по особому нужно работать? В БД тип поля text, а не varchar(50) как у других

0 т к стоит автоинкременент и автоматически берется следующее число





sasha0012
Страница недоступна
Сайт yrist-chentr.pe.hu пока не может обработать этот запрос.
HTTP ERROR 500

Выдает ошибку
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
21.05.2018, 19:19
Sasha2000, если автоинкрементное то нужно 0 заменить на NULL. С textarea могут быть проблемы, если в строке будут некоторые символы, например кавычки, апострофы, слеши и тд. Здесь придётся методом проб и ошибок идти.
Попробуйте сначала NULL, потом будем кодировать переменную $text. Ещё могут быть нестыковки с MariaDB.
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
21.05.2018, 19:21  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
Sasha2000, если автоинкрементное то нужно 0 заменить на NULL. С textarea могут быть проблемы, если в строке будут некоторые символы, например кавычки, апострофы, слеши и тд. Здесь придётся методом проб и ошибок идти.
Попробуйте сначала NULL, потом будем кодировать переменную $text. Ещё могут быть нестыковки с MariaDB.

PHP
1
$query = "INSERT INTO `Konsultachii` (`id`, `id_user`, `Name`, `Phone`, `Text`) VALUES (NULL, $id, $name, $tel, $text)";
Ошибка создания регистрации пользователя You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'вечер!)' at line 1


В поле записано
Добрый вечер!

т е он его обрубает
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
21.05.2018, 19:29
Лучший ответ Сообщение было отмечено Sasha2000 как решение

Решение

Цитата Сообщение от Sasha2000 Посмотреть сообщение
HTTP ERROR 500
Ого!

Попробуйте так:
PHP
1
$query = "INSERT INTO Konsultachii (id_user, Name, Phone, Text) VALUES ('$id', '$name', '$tel', '$text')";
1
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 85
21.05.2018, 19:31  [ТС]
ЙЕС!!!! Все работает! Спасибо большое-пребольшое!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2018, 19:31
Помогаю со студенческими работами здесь

Внешний ключ
Друзья подскажите пожалуйста есть две таблички связанные внешним ключём.При удалении записи ,которая является внешним ключем,во второй...

Внешний ключ в БД
Здравствуйте! У меня имеются две таблицы. Таблица places: Таблица types: Мне необходимо связать поле id_type types из...

Внешний ключ
Может ли один столбец(первичный ключ) являться внешним ключом для другого столбца этой же таблицы?

Внешний ключ
В грид выводится таблица, одно из полей которых является внешним ключом. Как вывести вместо этого ключа данные из таблицы, на которую он...

внешний ключ
есть две таблицы CREATE TABLE STAFF (ID integer NOT NULL PRIMARY KEY, lastName varchar (30) NOT NULL, ... PosID...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru