简体   繁体   English

插入不工作外键PHP

[英]INSERT INTO is not working foreign key php

The check 'if' works but the values are not updating into the database. 检查“ if”是否有效,但值未更新到数据库中。 what is wrong? 怎么了?
I think is the code is right, it confirms the sucess from the insert. 我认为代码是正确的,它可以确认插入成功。 The foreign key is emp_id that references the primary key from a table called empresa (idempresa). 外键是emp_id,它引用名为empresa(idempresa)的表中的主键。

    // 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>';
        }
      }
    ?>

Two things. 两件事情。

You are not executing query. 您不执行查询。 Execute it like this 像这样执行

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

now the other thing is that your insert query is totally wrong. 现在另一件事是您的插入查询完全错误。 it does not use set keyword . 它不使用set关键字。 Use it like this 这样使用

$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);

CREATE TABLE IF NOT EXISTS empresa ( idempresa int(10) unsigned NOT NULL AUTO_INCREMENT, nomefantasia varchar(255) NOT NULL, razaosocial varchar(255) NOT NULL, cnpj varchar(12) NOT NULL, cepemp varchar(8) NOT NULL, estadoemp varchar(2) NOT NULL, empcidade varchar(255) CHARACTER SET utf8 NOT NULL, ruaemp varchar(255) NOT NULL, bairroemp varchar(255) NOT NULL, numeroemp varchar(255) NOT NULL, compemp varchar(20) NOT NULL, categoriaemp varchar(45) NOT NULL, logomarca varchar(64) NOT NULL, telefoneum varchar(20) NOT NULL, telefonedois varchar(20) NOT NULL, emailum varchar(255) NOT NULL, emaildois varchar(255) NOT NULL, PRIMARY KEY ( idempresa ) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; CREATE TABLE IF NOT EXISTS empresaidempresa INT(10)无符号NOT NULL AUTO_INCREMENT, nomefantasia VARCHAR(255)NOT NULL, razaosocial VARCHAR(255)NOT NULL, cnpj VARCHAR(12)NOT NULL, cepemp VARCHAR(8)NOT NULL, estadoemp varchar(2)NOT NULL, empcidade varchar(255)CHARACTER SET utf8 NOT NULL, ruaemp varchar(255)NOT NULL, bairroemp varchar(255)NOT NULL, numeroemp varchar(255)NOT NULL, compemp varchar(20)NOT NULL, categoriaemp varchar(45)NOT NULL, logomarca varchar(64)NOT NULL, telefoneum varchar(20)NOT NULL, telefonedois varchar(20)NOT NULL, emailum varchar(255)NOT NULL, emaildois varchar(255)NOT NULL,主键( idempresa ))ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 9;

-- ALTER TABLE cardapio ADD CONSTRAINT cardapio_ibfk_3 FOREIGN KEY ( emp_id ) REFERENCES empresa ( idempresa ) ON DELETE CASCADE ON UPDATE CASCADE; cardapio TABLE cardapio添加约束cardapio_ibfk_3 FOREIGN KEY( emp_id )参考empresaidempresa )启用DELETE CASCADE启用UPDATE CASCADE;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM