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

Внешний ключ

20.05.2018, 19:18. Показов 1618. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru