Вставить в 2 таблицы с одной формой с 2 ​​операторами sql, не работающими

Я пытаюсь вставить сразу в 2 таблицы из одной формы. таблица № 1 = ванна_orders
таблица №2 = клиенты
Очевидно, я одновременно пытаюсь создать список адресов электронной почты.

PHP пропускает первую команду INSERT INTO и переходит ко второй и продолжает выполнять оставшуюся часть кода на странице.

Я нахожу несколько из следующих ошибок при каждом выполнении в моем файле журнала ошибок:

PHP Notice: Undefined variable: on line

Я искал тему и обнаружил, что в большинстве случаев люди ошибочно пытались

$sql = "INSERT INTO bath_orders, customers ...." 

Но в моем коде это не так. Мой код выглядит следующим образом:

<?php
$servername = "localhost";
$username = "my_user_name";
$password = "my_password";
$dbname = "my_database";

//  connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check 
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

if (isset($_POST['submit'])){


$fname = mysqli_real_escape_string($conn, $_POST['fname']);
$lname = mysqli_real_escape_string($conn, $_POST['lname']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$phone = mysqli_real_escape_string($conn, $_POST['phone']);
$custaddress = mysqli_real_escape_string($conn, $_POST['custaddress']);
$city = mysqli_real_escape_string($conn, $_POST['city']);
$state = mysqli_real_escape_string($conn, $_POST['state']);
$zip = mysqli_real_escape_string($conn, $_POST['zip']);
$pic1 = mysqli_real_escape_string($conn, $_POST['pic1']);
$pic2 = mysqli_real_escape_string($conn, $_POST['pic2']);
$pic3 = mysqli_real_escape_string($conn, $_POST['pic3']);
$startdate = mysqli_real_escape_string($conn, $_POST['startdate']);
$walltiledemo = mysqli_real_escape_string($conn, $_POST['walltiledemo']);
$walltile = mysqli_real_escape_string($conn, $_POST['walltile']);
$otherwalltile = mysqli_real_escape_string($conn, $_POST['otherwalltile']);
$otherwalltileh = mysqli_real_escape_string($conn, $_POST['otherwalltileh']);
$otherwalltilew = mysqli_real_escape_string($conn, $_POST['otherwalltilew']);
$walltileinst = mysqli_real_escape_string($conn, $_POST['walltileinst']);
$pandemo = mysqli_real_escape_string($conn, $_POST['pandemo']);
$paninst = mysqli_real_escape_string($conn, $_POST['paninst']);
$flrtileinst = mysqli_real_escape_string($conn, $_POST['flrtileinst']);
$flrtile = mysqli_real_escape_string($conn, $_POST['flrtile']);
$otherflrtile = mysqli_real_escape_string($conn, $_POST['otherflrtile']);
$tub = mysqli_real_escape_string($conn, $_POST['tub']);
$newtub = mysqli_real_escape_string($conn, $_POST['newtub']);
$othertub = mysqli_real_escape_string($conn, $_POST['othertub']);
$door = mysqli_real_escape_string($conn, $_POST['door']);
$newdoor = mysqli_real_escape_string($conn, $_POST['newdoor']);
$otherdoor = mysqli_real_escape_string($conn, $_POST['otherdoor']);
$floortiledemo = mysqli_real_escape_string($conn, $_POST['floortiledemo']);
$floortileinst = mysqli_real_escape_string($conn, $_POST['floortileinst']);
$floortile = mysqli_real_escape_string($conn, $_POST['floortile']);
$otherfloortile = mysqli_real_escape_string($conn, $_POST['otherfloortile']);
$otherfloortileh = mysqli_real_escape_string($conn, $_POST['otherfloortileh']);
$otherfloortilew = mysqli_real_escape_string($conn, $_POST['otherfloortilew']);
$vanity = mysqli_real_escape_string($conn, $_POST['vanity']);
$newvanity = mysqli_real_escape_string($conn, $_POST['newvanity']);
$othervanity = mysqli_real_escape_string($conn, $_POST['othervanity']);




$sql = "INSERT INTO bath_orders (firstname, lastname, email, phone , custaddress , city , state , zip , pic1 , pic2 , pic3 ,  startdate , walltiledemo , walltile , otherwalltile , otherwalltileh , otherwalltilew , walltileinst , pandemo , paninst , flrtileinst , flrtile , otherflrtile , tub , newtub , othertub , door , newdoor , otherdoor , floortiledemo , floortileinst , floortile , otherfloortile , otherfloortileh , otherfloortilew , vanity , newvanity , othervanity)
VALUES ('$fname', '$lname', '$email', '$phone', '$custaddress' , '$city' , '$state' , '$zip' , '$pic1' , '$pic2' , '$pic3' , '$startdate' , '$walltiledemo' , '$walltile' , '$otherwalltile' , '$otherwalltileh' , '$otherwalltilew' , '$walltileinst' , '$pandemo' , '$paninst' , '$flrtileinst' , '$flrtile' , '$otherflrtile' , '$tub'  , '$newtub' , '$othertub' , '$door' , '$newdoor' , '$otherdoor' , '$floortiledemo' , '$floortileinst' , '$floortile' , '$otherfloortile' , '$otherfloortileh' , '$otherfloortilew' , '$vanity' , '$newvanity' , '$othervanity' )";

$sql = "INSERT INTO customers (fname, lname, email, phone , custaddress , city , state , zip , comments )
VALUES ('$fname', '$lname', '$email', '$phone', '$custaddress' , '$city' , '$state' , '$zip' , '$comments')";

Я исследовал эту тему, но ... Я не понимаю, что делаю неправильно. Он говорит, что нужно выполнить 2 отдельных оператора INSERT INTO, и я думаю, что это то, что я делаю.
Не мог бы кто-нибудь помочь мне понять, как должны выглядеть 2 отдельных утверждения.
TYIA

Вот ссылка на скрипку

https://jsfiddle.net/fiveonadub/836n4ycf/2/

Думаю, я понял, что ошибки PHP, которые я получаю, связаны с тем, что в эти поля формы при отправке не были введены какие-либо значения. Как я могу избежать этих ошибок, если кто-то решит не вводить значение?

Christopher Futch 16.09.2018 17:10

«Уведомление PHP: неопределенная переменная: в строке» какая переменная, в какой строке? Он вообще упоминает об этом?

Stratadox 16.09.2018 21:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
38
3

Ответы 3

Вам нужен пользователь mysqli_query(). Функция mysqli_query() выполняет запрос к базе данных.

Сохраните первый запрос в $sql1, а второй в $sql2

mysqli_query($conn, $sql1); mysqli_query($conn, $sql2);

Я пробовал несколько разных способов реализовать ваше предложение, но у меня ничего не работает должным образом. Я не должен ясно понимать.

Christopher Futch 16.09.2018 17:46

Пожалуйста, добавьте свой код <form> в вопрос выше, который поможет мне создать такую ​​же ошибку на моем компьютере.

Gru 16.09.2018 18:20

ГРУ, спасибо. Я отредактировал свой исходный пост, чтобы включить ссылку на скрипку внизу.

Christopher Futch 16.09.2018 20:32

Я не понимаю, как ваш php пропускает первую команду INSERT INTO и переходит ко второй. Вы не использовали функцию mysqli_query () ни для одной из них. Сохраните вывод этих двух запросов в двух разных переменных, а затем передайте эту переменную в качестве параметра в mysqli_query (). Тогда будет выполнен только ваш запрос.

-Спасибо,

Есть две вещи, которые здесь идут не так.

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

Во-вторых, я знаю это только потому, что я быстро скопировал / вставил ваш код в IDE, но переменная $ comments не определена.

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

Stratadox 16.09.2018 21:58

Другие вопросы по теме