Как установить внешний ключ так же, как первичный ключ другой таблицы одновременно? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть две таблицы, ordine и prodotto. Таблица ordine имеет ordine_id как Первичный ключ (автоинкременты), cliente_nome, scadenza, stato.

Таблица prodotto имеет prodotto_id как Первичный ключ (автоинкременты), ordine_id как Внешний ключ , prodotto_tipo, prodotto_imballaggio, prodotto_quantita.

Я не могу понять как установить внешний ключ ordine_id из prodotto так же, как первичный ключ ordine_id из ordine одновременно.

Я собираю данные из пользовательского ввода и использовать POST с Ajax

$('#add').click(function(){
   var html = '<tr>';
   html += '<td  id="data1"></td>';
   html += '<td contenteditable id="data2"></td>';
   html += '<td contenteditable id="data3"></td>';
   html += '<td contenteditable id="data4"></td>';
   html += '<td contenteditable id="data5"></td>';
   html += '<td contenteditable id="data6"></td>';
   html += '<td  id="data7"></td>';
   html += '<td><button type="button" name="insert" id="insert" class="btn btn-success btn-xs">Inserisci</button></td>';
   html += '</tr>';
   $('#user_data tbody').prepend(html);
  });

  $(document).on('click', '#insert', function(){

   var cliente_nome = $('#data2').text();
   var prodotto_tipo = $('#data3').text();
   var prodotto_imballaggio = $('#data4').text();
   var prodotto_quantitá = $('#data5').text();
   var scadenza = $('#data6').text();

   if(cliente_nome != '' && prodotto_tipo != '' && prodotto_imballaggio != '' && prodotto_quantitá != '' && scadenza != '')
   {
    $.ajax({
     url:"insert.php",
     method:"POST",
     data:{cliente_nome:cliente_nome, prodotto_tipo:prodotto_tipo, prodotto_imballaggio:prodotto_imballaggio, prodotto_quantitá:prodotto_quantitá, scadenza:scadenza},
     success:function(data)
     {
      $('#alert_message').html('<div class="alert alert-success">'+data+'</div>');
      $('#user_data').DataTable().destroy();
      fetch_data();
     }
    });
    setInterval(function(){
     $('#alert_message').html('');
    }, 5000);
   }
   else
   {
    alert("Tutti i campi sono richiesti");
   }
  });

Это мой код для вставки :

<?php
$connect = mysqli_connect("localhost", "buyme", "", "my_buyme");
if(isset($_POST["cliente_nome"], $_POST["scadenza"])){
$cliente_nome = mysqli_real_escape_string($connect, $_POST["cliente_nome"]);
$scadenza = mysqli_real_escape_string($connect, $_POST["scadenza"]);
$query = "INSERT INTO ordine (cliente_nome, scadenza, stato) VALUES('$cliente_nome', '$scadenza', 'Da spedire')";
if(mysqli_query($connect, $query))
{
 echo 'Ordine Inserito';
}
}
?>

<?php
$connect = mysqli_connect("localhost", "buyme", "", "my_buyme");
if(isset($_POST["prodotto_tipo"], $_POST["prodotto_imballaggio"])){
$prodotto_tipo  = mysqli_real_escape_string($connect, $_POST["cliente_nome"]);
$prodotto_imballaggio = mysqli_real_escape_string($connect, $_POST["scadenza"]);
$prodotto_quantita = mysqli_real_escape_string($connect, $_POST["cliente_nome"]);

$query = "INSERT INTO prodotto (prodotto_tipo, prodotto_imballaggio, prodotto_quantitá) VALUES('$prodotto_tipo', '$prodotto_imballaggio', '$prodotto_quantita')";
if(mysqli_query($connect, $query))
{
 echo 'Ordine Inserito';
}
}
?>

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Функция mysqli_insert_id () возвращает последний вставленный первичный ключ текущего соединения.

Таким образом, он должен выглядеть следующим образом

$ordine_id = mysqli_insert_id($connect);

Также вы должны использовать подготовленные операторы или даже бросьте mysqli и используйте PDO.

0 голосов
/ 14 апреля 2020

Я использовал функцию mysqli_insert_id (). Он возвращает идентификатор, сгенерированный запросом (обычно INSERT) для таблицы со столбцом, имеющим атрибут AUTO_INCREMENT. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...