INSERT INTO不工作外键php

时间:2013-04-25 08:49:21

标签: php insert key

检查'if'是否有效,但值未更新到数据库中。有什么不对? 我认为代码是正确的,它确认了插入的成功。外键是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>';
        }
      }
    ?>

2 个答案:

答案 0 :(得分:0)

两件事。

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

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

现在另一件事是你的插入查询是完全错误的。 它不使用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);

答案 1 :(得分:0)

CREATE TABLE IF NOT 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,   主要关键(idempresa) )ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 9;

- ALTER TABLE cardapio   添加约束cardapio_ibfk_3 FOREIGN KEY(emp_id)引用empresaidempresa)ON DELETE CASCADE ON UPDATE CASCADE;