Php транзакции для вставки выбора из формы и нескольких таблиц в новую запись в другой таблице - PullRequest
0 голосов
/ 27 мая 2019

Из формы Php вставьте 9 полей данных, захваченных формой, в 'tbl-e' (Table-E), чтобы создать новую запись MySQL из 15 полей.Это заявление $insert1.Затем заполните оставшиеся 10 полей новой записи из 6 других таблиц ('tbl-ec' {2 fields}, Table-ES {2 fields}, Table-EC1 {2 fields} и Table-EC2 {2 fields}) в одной инструкции Php.

Используется Php Fiddle online, MySQLDB Analyzer, руководства по Php и MySQL и онлайн-примеры, но нашли только часть информации.

<?php
    $dbConnection = mysqli_connect('230.11.30.2', 'RAwuYqfi', 'IqELTQKQi!6%', 'dw_ans');

    /* Change database details according to your database */
    mysqli_autocommit($dbConnection, false);
            $name = $_POST['name'];
            $desc = $_POST['desc'];
            $target = $_POST['target'];
            $type = $_POST['type'];
            $city = $_POST['city'];
            $county = $_POST['county'];
            $subj = $_POST['subj'];
            $duedate = $_POST['duedate'];
            $area = $_POST['area'];

            $name = stripslashes($name);
            // $name = mysql_real_escape_string($name);
            $desc = stripslashes($desc);
            // $desc = mysql_real_escape_string($desc);
            $target = stripslashes($target);
            // $target = mysql_real_escape_string($target);
            $type = stripslashes($type);
            // $type = mysql_real_escape_string($type);
            $city = stripslashes($city);
            // $city = mysql_real_escape_string($city);
            $county = stripslashes($county);
            // $county = mysql_real_escape_string($county);
            $subj = stripslashes($subj);
            // $subj = mysql_real_escape_string($subj);
            $duedate = stripslashes($duedate);
            // $duedate = mysql_real_escape_string($duedate);
            $area = stripslashes($area);

            $mysqli->begin_transaction();
            $insert1 = $mysqli->query("INSERT into `tbl_e` (name, desc, target, type, city, county, subj, duedate, area) VALUES ('$name', '$desc', '$target', '$type', '$city', '$county', '$subj', '$duedate', '$area')");
            $insert2 = $mysqli->query("SELECT * FROM `tbl_e` INNER JOIN tbl_es on tbl_e.type = $type WHERE tbl_e.type = 'Education' AND tbl_es.ans LIKE 'Private%' 
                    ORDER BY CASE WHEN tbl_es.ans = 'Private' THEN 'school'
                    WHEN tbl_es.ans LIKE 'Private%' THEN 'education'
                    WHEN tbl_es.ans LIKE '%Private%' THEN 'tutor'
                    WHEN tbl_es.ans LIKE '%Private' THEN 'teacher'
                    ELSE 'exam'
                    END, tbl_es.ans LIMIT 1");

                    $result2 = mysqli_query($dbConnection,$insert2);
                    while($row = mysqli_fetch_array($result2))
                    {
                            $field1 = $row['ans'];
                            $field2 = $row['ans1'];
                            $field3 = $row['ans2'];
                            $field4 = $row['ans3'];
                    }

            $insert3 = "INSERT INTO tbl_e (ans, ans1, ans2, ans3) VALUES ('$field1', '$field2', '$field3', '$field4')";

            if ($insert->affected_rows > 0) {
                $mysqli->commit();
            } else {
                $mysqli->rollback();
            }

    } 
    mysqli_close($dbConnection);

    ?>

Ожидаемые результаты: $ insert1 создаст новую запись в tbl-e, используя9 полей данных из формы.$ insert2 и $ insert3 будут собирать 6 полей данных из соответствующей строки в таблицах и добавлять их в новую запись в таблице tbl-e.

Фактические результаты: $ insert1 никогда не добавляется9 полей данных из формы.Работают $ insert2 и $ insert3 - они собирают 6 полей данных из соответствующей строки в таблицах и создают новую запись в таблице.

...