INSERT INTO无法使用外键php


INSERT INTO is not working foreign key php

检查"if"有效,但值不会更新到数据库中。怎么了
我认为是代码是正确的,它从插入中确认了成功。外键是emp_id,它引用名为empresa(幂等(的表中的主键。

    // get post from other file
      @$pegar = $_POST['postempresa'];
      $q = " SELECT idempresa FROM empresa WHERE idempresa = $pegar " ;

      if (isset($_POST['submit'])) {
        // Connect to the database
        $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);


        // Grab the medida data from the POST

        $fk_empresa = mysqli_real_escape_string($dbc, trim($_POST['chaveestrangeira']));

        $prato = mysqli_real_escape_string($dbc, trim($_POST['f_prato']));
        $medida = mysqli_real_escape_string($dbc, trim($_POST['f_medida']));
        $preco = mysqli_real_escape_string($dbc, trim($_POST['f_preco']));
        $pessoas = mysqli_real_escape_string($dbc, trim($_POST['f_pessoas']));
        $categoria = mysqli_real_escape_string($dbc, trim($_POST['f_categoria']));
        $obs = mysqli_real_escape_string($dbc, trim($_POST['f_obs']));
        $foto = mysqli_real_escape_string($dbc, trim($_FILES['f_foto']['name']));
        $foto_type = $_FILES['f_foto']['type'];
        $foto_size = $_FILES['f_foto']['size']; 


        if (!empty($prato) && !empty($medida) && !empty($preco) && !empty($pessoas) && !empty($categoria) ) {
          if ((($foto_type == 'image/gif') || ($foto_type == 'image/jpeg') || ($foto_type == 'image/pjpeg') || ($foto_type == 'image/png')) && ($foto_size > 0) && ($foto_size <= GW_MAXSIZECARD)) {
            if ($_FILES['f_foto']['error'] == 0) {
              // Move the file to the target upload folder
              $target = GW_UPCARD . $foto;
              if (move_uploaded_file($_FILES['f_foto']['tmp_name'], $target)) {
                // Write the data to the database

                $query = 
                "INSERT INTO cardapio SET
                 emp_id = '$q',
                 prato = '$prato',
                 medida = '$medida',
                 preco = '$preco',
                 pessoas = '$pessoas',
                 categoria = '$categoria',
                 obs = '$obs',
                 foto = '$foto'

                 ";
                mysqli_query($dbc, $query);
                echo mysql_error();
                // Confirm success with the user
                echo '<p>Cardapio enviado!</p>';
                echo '<p><strong>ID EMPRESA</strong> ' . $fk_empresa . '<br />';
                echo '<p><strong>prato:</strong> ' . $prato . '<br />';
                echo '<strong>Medida:</strong> ' . $medida . '<br />';
                echo '<strong>Preço:</strong> ' . $preco . '<br />';
                echo '<strong>Categoria:</strong> ' . $categoria . '<br />';
                echo '<strong>Obs:</strong> ' . $obs . '<br />';
                echo '<img src="' . GW_UPCARD . $foto . '" alt="Score image" /></p>';
                echo '<p><a href="index.php">Voltar para admin</a></p>';
                // Clear the medida data to clear the form
                $prato = "";
                $medida = ""; 
                $preco = "";
                $pessoas = "";
                $categoria = "";
                $obs = "";
                $foto = "";

                mysqli_close($dbc);
              }
              else {
                echo '<p class="error">Tivemos um erro no upload da imagem.</p>';
              }
            }
          }
          else {
            echo '<p class="error">A imagem precisa ter extensão GIF, JPEG, ou PNG e menor que ' . (GW_MAXSIZECARD / 1024) . ' KB.</p>';
          }
          // Try to delete the temporary screen shot image file
          @unlink($_FILES['foto']['tmp_name']);
        }
        else {
          echo '<p class="error">Por favor, preencha todos os campos.</p>';
        }
      }
    ?>

如果不存在则创建表empresa(CCD_ 2 int(10(unsigned NOT NULL AUTO_INCREMENT,CCD_ 3 varchar(255(NOT NULL,CCD_ 4 varchar(255(NOT NULL,CCD_ 5 varchar(12(不为空,CCD_ 6 varchar(8(NOT NULL,CCD_ 7 varchar(2(NOT NULL,CCD_ 8 varchar(255(CHARACTER SET utf8 NOT NULL,CCD_ 9 varchar(255(NOT NULL,CCD_ 10 varchar(255(NOT NULL,CCD_ 11 varchar(255(NOT NULL,CCD_ 12varchar(20(不为空,CCD_ 13 varchar(45(不为空,CCD_ 14 varchar(64(NOT NULL,CCD_ 15 varchar(20(NOT NULL,CCD_ 16 varchar(20(NOT NULL,CCD_ 17 varchar(255(NOT NULL,CCD_ 18 varchar(255(NOT NULL,主键(idempresa()ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9;

--更改表idempresa0在更新级联上的删除级联上添加约束cardapio_ibfk_3外键(emp_id(引用empresa(idempresa(;

两件事。

您没有执行查询。像这样执行

$rec    = " SELECT idempresa FROM empresa WHERE idempresa = $pegar " ;
$result =   mysqli_query($rec);
if($result){
    $row    =   myqsli_fetch_assoc($result);
    $q      =   $row['idempresa'];
}else{
    $q = '';
}

现在,另一件事是您的insert查询完全错误。它不使用set关键字。像这样使用

$query = "INSERT INTO cardapio 
            (emp_id ,prato ,medida ,preco , pessoas , categoria , obs ,foto )
            VALUES
            ('$q','$prato','$medida','$preco','$pessoas','$pessoas','$categoria','$obs','$foto')";
mysqli_query($query);