Как вставить в два разных массива в базе данных mysql?

Хорошо, теперь у меня есть 2 поля ввода на флажке, и еще одно - вводимый текст как это

<input type = "text" name = "student[]">
<input type = "checkbox" name = "marks[]">

Теперь я хочу вставить все данные в базу данных. Как вставить одновременно.

это пример php want, но только один массив

foreach($student as $value){

    $sql = "INSERT INTO `academic` ('student', `mark`) VALUES ('$value','mark')";

        if (mysqli_query($conn, $sql)){
            echo "Insert mark for student ".$value." complete<br>";
        } else {
            echo "Error: " . mysqli_error($conn);
        }
    }

как сделать так, чтобы он мог одновременно вставлять 2 разных массива?

Как насчет использования foreach и попробовать это решение

Tiến Nguyễn Hoàng 02.05.2018 07:58

Пожалуйста, покажите нам, как будет выглядеть ожидаемый результат (пример данных в базе данных).

Magnus Eriksson 02.05.2018 07:59

Выполните два цикла foreach. Один для $student и другой для $marks, который будет внутри $student.

Prashant Tapase 02.05.2018 08:07

@AmrAly - Использование PDO само по себе не поможет вам против SQL-инъекций. Вам необходимо использовать подготовленные операторы, что также можно сделать с помощью mysqli.

Magnus Eriksson 02.05.2018 08:07

OP действительно должен показать нам ожидаемый результат, прежде чем мы сможем дать правильный ответ. Кстати, в форме есть несколько студентов? Если да, то как узнать, какие отметки у какого ученика? В настоящее время любой ответ будет просто дикой догадкой с множеством предположений.

Magnus Eriksson 02.05.2018 08:10

@Magnus Eriksson, вы правы, подготовленные операторы также можно использовать в mysqli

Amr Aly 02.05.2018 08:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
1
6
293
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Объедините два массива в один массив. Примерно так: $res = array_merge($my_array1, $my_array2);

Затем вставьте данные в базу данных, как показано ниже:

foreach (array_expression as $key => $value)
{
  //Here Goes Here Your Logic....
}

Как это будет работать, если два массива содержат разные данные, которые предполагается вставить в разные столбцы?

Magnus Eriksson 02.05.2018 07:59

Согласно вопросу, заданному @Fazidi Ijtihad, один массив будет содержать имена студентов, а другой - оценки каждого студента.

Debakant Mohanty 02.05.2018 08:03

Да. $_POST['students'] и $_POST['marks']. Если вы объедините их, в результате получится один массив со всеми значениями, не зная, какое значение какое.

Magnus Eriksson 02.05.2018 08:05

используйте JSON для хранения данных. просто закодируйте массив в json и декодируйте, когда хотите использовать например, json_encode ($ array);

Это плохой дизайн, который противоречит нормализации базы данных.

Magnus Eriksson 02.05.2018 08:06

вам нужно подсчитать значение student и marks и проверить student values>marks values или student values<marks values. и использовать его в цикле for. после этого проверьте, существуют ли значения в учащихся, и отметьте array. что-то вроде этого.

 if (isset($_POST['student'])) {
    $student=$_POST['student'];
    $marks=$_POST['marks'];
    $countStudent=count($student);
    $countMarks=count($marks);
    if ($countMarks>$countStudent) {
        $resultCount=$countMarks;
    }
    else{
        $resultCount=$countStudent;

    }

    for ($i = 0; $i <=$resultCount-1 ; $i++) {
        if (isset($student[$i])) {
            $value= $student[$i];
        }
        else{
            $value= '';
        }
        if (isset($marks[$i])) {
            $mark = $marks[$i];
        }
        else{
            $mark = '';
        }
        $sql = "INSERT INTO `academic` ('student', `mark`) VALUES ('$value','$mark')";
    }
}
Ответ принят как подходящий

В этом случае вы можете использовать второй foreach для второго массива, например

foreach($student as $value){
 foreach($marks as $singlemarks){

    $sql = "INSERT INTO `academic` ('student', `mark`) VALUES ('$value','$singlemarks')";

        if (mysqli_query($conn, $sql)){
            echo "Insert mark for student ".$value." complete<br>";
        } else {
            echo "Error: " . mysqli_error($conn);
        }
     }
    }

и вы также можете преобразовать массив в json для хранения нескольких массивов в базе данных как json_encode ($ array) и так же, как вы можете декодировать, когда хотите его использовать

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