【问题标题】:Trying to insert data from a drop-down list as a foreign key in another table. Data not inserted试图将下拉列表中的数据作为外键插入另一个表中。未插入数据
【发布时间】:2018-06-02 11:32:05
【问题描述】:

我一直试图找出我的错误在哪里,但没有成功。我没有收到任何报告的错误。我想将数据从 PHP 表单插入到供应商表中。 id_drugstoresupplier 表中的外键,可以从下拉列表中选择(下拉列表工作正常)。另一个日期由用户填写,id_supplier 除外。

<?
   error_reporting(-1);
   $conn = mysqli_connect("localhost", "root", "", "retete");
   if(mysqli_connect_errno())
   {
    echo "Nu ma pot conecta la baza de date medical:" .mysqli_connect_error(); 
   }
    if(isset($_POST['submit']){

    $id_drugstore=$_POST['id_drugstore'];
    $name_suplier=$_POST['name_suplier'];
    $country_supplier=$_POST['county_supplier'];
    $county_supplier=$_POST['county_supplier'];
    $town_supplier=$_POST['town_supplier'];
    $street_supplier=$_POST['street_supplier'];
    $bank_suplier=$_POST['bank_suplier'];
    $no_cont_Bank=$_POST['$no_cont_Bank'];

    $qry=mysqli_query("INSERT INTO supplier `VALUES('sss','%$id_drugstore%',$_POST['name_suplier']','$_POST['county_supplier']','$_POST['county_supplier']','$_POST['town_supplier']','$_POST['street_supplier']','$_POST['bank_suplier']','$_POST['$no_cont_Bank']";`
    $inserted=($qry,$conn);
    if($inserted){
    echo "Datele au fost inserate cu suucess";
    }else{
    echo "datele nu au putut fi salvate in baza de date".mysqli_error($conn);
    }
    }
    mysqli_close($conn);
    }
    ?>

    <body>
    <div class="jumbotron">
    <div class="container">
    <h4 class="display-5">Adaugare Furnizori in baza de date</h4>
    <p class="lead">Completati formularul de mai jos</p>
    </div>
    </div>
    <form action="AdaugareFurnizori.php" method="POST">
    <div class="form-row">
    <div class="col-md-2 mb-3">
    <label for="validationServer01">Farmacie</label>
    <select name="name_drugstore">
    <option>Selecteaza farmacie</option>
    <?php
    $conn = mysqli_connect("localhost", "root", "", "retete");
    if(mysqli_connect_errno()){
    echo "Nu ma pot conecta la baza de date medical:".mysqli_connect_error(); 
    }           
    $q=mysqli_query($conn,"SELECT * FROM drugstore")or die(mysqli_error());

    $c=mysqli_num_rows($q);
    if($c==0){
    echo 'Nu exista farmacie in baza de date';
    }else{
    while($row=mysqli_fetch_array($q)){
    $id_drugstore=$row['id_drugstore'];
    $name_drugstore=$row['name_drugstore'];
    echo "<option value='$id_drugstore'>$id_drugstore/$name_drugstore<option>
    }
    }
    mysqli_close($conn);
    ?>
    </select>
    </div>
    </div>
    <div class="form-row">
    <div class="col-md-4 mb-3">
    <label for="validationServer01">Denumire Furnizori</label>
    <input type="text" name="name_suplier" class="form-control is-valid" id = "validationServer01" placeholder="Denumire Furnizor" required>
    </div>
    </div>
    <div class="form-row">
    <div class="col-md-2 mb-3">
    <label for="validationServer02">Tara</label>
    <input type="text" name="country_supplier" class="form-control is-valid" id="validationServer02" placeholder="Tara" required>
    <div class="invalid-feedback">
    Va rugam sa introduceti tara.
    </div>
    </div>
    <div class="col-md-2 mb-3">
    <label for="validationServer03">Judet</label>
    <input type="text" name="county_supplier" class="form-control is-valid" id="validationServer03" placeholder="Judet" required>
    <div class="invalid-feedback">
    Va rugam sa introduceti judetul.
    </div>
    </div>
    <div class="col-md-2 mb-3">
    <label for="validationServer04">Oras</label>
    <input type="text" name="town_supplier"class="form-control is-valid" id="validationServer04" placeholder="Oras" required>
    <div class="invalid-feedback">
    Va rugam sa introduceti orasul.
    </div>
    </div>
    <div class="col-md-2 mb-3">
    <label for="validationServer05">Strada si numar</label>
    <input type="text" name="street_supplier" class="form-control is-valid" id="validationServer05" placeholder="Strada" required>
    <div class="invalid-feedback">
    Va rugam sa introduceti strada.
    </div>
    </div>
    <div class="col-md-2 mb-3">
    <label for="validationServer04">Banca</label>
    <input type="text" name="bank_suplier"class="form-control is-valid" id="validationServer04" placeholder="Denumire Banca" required>
    <div class="invalid-feedback">
    Va rugam sa introduceti banca.
    </div>
    </div>
    <div class="col-md-2 mb-3">
    <label for="validationServer05">Cont</label>
    <input type="text" name="no_cont_Bank" class="form-control is-valid" id="validationServer05" placeholder="Numar Cont" required>
    <div class="invalid-feedback">
    Va rugam sa introduceti numarul contului.
    </div>
    </div>
    <div class="submit">
    <button class="btn btn-primary" type="submit">Submit form</button>
    </div>
    </div>
    </form>

    </body>
    </html> 

【问题讨论】:

  • 你检查过你的提交按钮是否被点击了吗?你还必须使用 mysqli_query() 方法提供连接字符串
  • 是的,我也这样做了,但什么也没发生。

标签: php database mysqli


【解决方案1】:

那个查询看起来很奇怪:

$qry=mysqli_query("INSERT INTO supplier `VALUES('sss','%$id_drugstore%',$_POST['name_suplier']','$_POST['county_supplier']','$_POST['county_supplier']','$_POST['town_supplier']','$_POST['street_supplier']','$_POST['bank_suplier']','$_POST['$no_cont_Bank']";`
  • 删除反引号`
  • $_POST['name_suplier']' 之前缺少一个开口'
  • 该字符串中的所有$_POST 变量将永远不会被替换,请将它们放在大括号中:{$_POST['name_suplier']}
  • 确保name_supliertown_supplier 没有拼写错误
  • 在查询末尾缺少一个右括号 AND 作为 mysql_query() 的右括号

旁注:该 INSERT 中不应该也有一个字段列表吗?

【讨论】:

  • 是我所做的更改: $qry=mysqli_query("INSERT INTO 供应商 (id_supplier, id_drugstore, name_suplier, country_supplier, county_supplier, town_supplier, @ 987654335@, bank_suplier, no_cont_Bank) 值 ('sss','%$id_drugstore%','{$_POST['name_supplier']}','{$_POST['country_supplier']}','{ $_POST['county_supplier']}','{$_POST['town_supplier']}','{$_POST['street_supplier']}','{$_POST['bank_supplier']}','{$_POST ['$no_cont_Bank']}'"); $inserted=($qry,$conn); 仍然没有任何反应
【解决方案2】:

你的代码应该是。 如果您的供应商表包含您要插入的所有这些字段,那么这将正常工作,但如果您跳过任何字段,则 mysqli_query 不起作用

$qry="INSERT INTO supplier `VALUES('sss','%$id_drugstore%',$_POST['name_suplier']','$_POST['county_supplier']','$_POST['county_supplier']','$_POST['town_supplier']','$_POST['street_supplier']','$_POST['bank_suplier']','$_POST['$no_cont_Bank']')";

$inserted=mysqli_query($qry,$conn);

【讨论】:

  • 我从 phpmyadmin 复制并粘贴插入查询,其中包含所有字段,我将 '$_POST['id_supplier']' 替换为 '%$id_drugstore%',但没有,没有错误,但是没有插入数据。
  • 您的查询是否在 phpmyadmin 中运行?你试过这种方式吗?把你的查询加上实际值,然后执行查询,然后看看是否显示任何错误
  • 它运行如下:INSERT INTO supplier (id_supplier, id_drugstore, name_suplier, country_supplier, county_supplier, town_supplier, street_supplier, @9876 ,no_cont_Bank) 值(NULL,'1','Phonix','罗马尼亚','Timis','Timisoara','CDLoga 17','BCR','RO77BRDE450SV65683066666');没有错误
  • 它是通过phpmyadmin插入的?
  • 我认为你的 id_supplier 是主键,它永远不会为空
猜你喜欢
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 2018-07-29
  • 2017-12-02
  • 1970-01-01
  • 2016-02-12
  • 2013-08-20
相关资源
最近更新 更多