Добавление данных в две таблицы, связанные с id

#php #mysql #sql #pdo

#php #mysql #sql #pdo

Вопрос:

Привет, здесь у меня есть этот код для вставки данных в базу данных mysql в таблицу radnici :

  try {        
                $STH = $db->prepare("INSERT INTO radnici (ime_prezime, jmbg, grad, ulica, posta, telefon, uloga, email, user_id) VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9)");

                $STH->bindParam(':1', $_POST['ime']);
                $STH->bindParam(':2', $_POST['jmbg']);
                $STH->bindParam(':3', $_POST['grad']);
                $STH->bindParam(':4', $_POST['ulica']);
                $STH->bindParam(':5', $_POST['posta']);
                $STH->bindParam(':6', $_POST['telefon']);
                $STH->bindParam(':7', $_POST['pozicija']);
                $STH->bindParam(':8', $_POST['email']);
                $STH->bindParam(':9', $user_id);

//HERE I NEED TO INSERT DATA TO TABLE WORKHOURS BUT CONNECTED WITH JUST ADDEDED ID
//SO here I NEED query something like this // INSERT INTO radnici (ID, ID_radnici, ime_prezime, jmbg,... here ID_radnici is =with ID from table radnici of added data


                $STH->execute();

            } catch (PDOException $e) {
                echo $e->getMessage();
            }
            echo "<p>Data submitted successfully</p>";
  

Итак, теперь, когда я добавляю это, мне нужно добавить в эту таблицу workhours данные, но связанные с идентификатором, с только что добавленными данными…

итак, во второй таблице у меня есть: ID, ID_radnici (here I must add ID_radnici same value as ID on table radnici), value, user_id

Я пишу это, но НЕ работаю: ОБНОВИТЬ:

  try {        
                $STH = $db->prepare("INSERT INTO radnici (ime_prezime, jmbg, grad, ulica, posta, telefon, uloga, email, user_id) VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9)");

                $STH->bindParam(':1', $_POST['ime']);
                $STH->bindParam(':2', $_POST['jmbg']);
                $STH->bindParam(':3', $_POST['grad']);
                $STH->bindParam(':4', $_POST['ulica']);
                $STH->bindParam(':5', $_POST['posta']);
                $STH->bindParam(':6', $_POST['telefon']);
                $STH->bindParam(':7', $_POST['pozicija']);
                $STH->bindParam(':8', $_POST['email']);
                $STH->bindParam(':9', $user_id);

                $orderID = $db -> lastInsertId();

   $STH1 = $db->prepare("INSERT INTO workhours (ID_radnika) values($orderID)");  // where $value is the value you want to insert...
   $STH->execute();
      $STH1->execute();






            } catch (PDOException $e) {
                echo $e->getMessage();
        }
        echo "<p>Data submitted successfully</p>";
  

Комментарии:

1. может быть, lastInsertId может быть решением для этого?

2. Поскольку вы не используете mysql, вы можете не захотеть помечать вопрос как таковой…

3. @RyanJ Это явно mysql, просто не использующий функции mysql в php.

Ответ №1:

Использование lastInsertId будет делать то, что вы хотите:

 $orderID = $db -> lastInsertId();
  

Ответ №2:

Используйте lastInsertId() и вставляйте свои данные в другую таблицу, используя возвращаемое из нее значение.

Что-то вроде этого:

 int $lastID = $db->lastInsertId();
if ( $lastID ) {
   $STH = $db->prepare("INSERT INTO workhours (ID_radnici, value, userid) values($lastID, $value, $user_id)");  // where $value is the value you want to insert...
   $STH->execute();
}
  

Комментарии:

1. но я использую php pdo, а не функции mysql

2. Как сказал @Andrew, он использует PDO, а не стандартные функции mysql (поскольку они устарели и допускают множественные угрозы безопасности). PDO или mysql_i — гораздо лучшие решения

3. Исправлен ответ. Спасибо.

4. Вы не можете получить последний вставленный идентификатор перед выполнением запроса. Сначала выполните первый запрос, затем вызовите lastInsertId()