Я пытаюсь вставить сразу в 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
Вот ссылка на скрипку
«Уведомление PHP: неопределенная переменная: в строке» какая переменная, в какой строке? Он вообще упоминает об этом?






Вам нужен пользователь mysqli_query(). Функция mysqli_query() выполняет запрос к базе данных.
Сохраните первый запрос в $sql1, а второй в $sql2
mysqli_query($conn, $sql1); mysqli_query($conn, $sql2);
Я пробовал несколько разных способов реализовать ваше предложение, но у меня ничего не работает должным образом. Я не должен ясно понимать.
Пожалуйста, добавьте свой код <form> в вопрос выше, который поможет мне создать такую же ошибку на моем компьютере.
ГРУ, спасибо. Я отредактировал свой исходный пост, чтобы включить ссылку на скрипку внизу.
Я не понимаю, как ваш php пропускает первую команду INSERT INTO и переходит ко второй. Вы не использовали функцию mysqli_query () ни для одной из них. Сохраните вывод этих двух запросов в двух разных переменных, а затем передайте эту переменную в качестве параметра в mysqli_query (). Тогда будет выполнен только ваш запрос.
-Спасибо,
Есть две вещи, которые здесь идут не так.
Во-первых, простое присвоение переменной строки, имеющей вид sql, еще не заставляет ее выполнять sql на сервере, вам нужно вызвать какой-то метод или функцию, чтобы это произошло.
Во-вторых, я знаю это только потому, что я быстро скопировал / вставил ваш код в IDE, но переменная $ comments не определена.
Кроме того, я считаю, что ваш код может значительно выиграть от таких вещей, как PDO и, возможно, библиотека форм. Поскольку кажется, что все значения экранированы и используется правильная цитата, это не напрямую подвержено риску внедрения sql, но это, в общем, довольно большая часть.
Думаю, я понял, что ошибки PHP, которые я получаю, связаны с тем, что в эти поля формы при отправке не были введены какие-либо значения. Как я могу избежать этих ошибок, если кто-то решит не вводить значение?