php表单没有插入到sql数据库

Posted

技术标签:

【中文标题】php表单没有插入到sql数据库【英文标题】:php form not inserting to sql database 【发布时间】:2018-04-29 15:02:37 【问题描述】:

我正在尝试进入 phpmysql,我已经创建了这个表格来将数据插入到我的数据库中,但是在填写表格后,没有数据被插入到 sql 数据库中。该信息将被插入到具有多个外键的表中。调试 sql 时,我收到错误消息:bad query:INSERT INTO bud('beløp,idkjoper,idgjenstand') VALUES ('7500','3','1') 这是正确的值。

我怀疑问题是我试图列出一个包含买家姓名的列表,然后将出价注册为出价的买家 ID。我试图绕过必须记住买家 ID 进行出价,而是让买家姓名出现在列表中,并在选择买家姓名后,将买家 ID 插入数据库。

如果您能抽出时间来看看,我将不胜感激:) 这是sql段。

<?php
$tilkobling=mysqli_connect ("localhost","root","root", "bruktbutikk");
$sql="select navn,etternavn from kjøper";
$datasett = $tilkobling->query($sql);


  $conn=mysqli_connect ("localhost","root","root", "bruktbutikk");
  $sql1="select beskrivelse,idgjenstand from gjenstand";
  $datasett1=$conn->query($sql1);

   if(isset($_POST["submit"]))
  
   $sql =sprintf("INSERT INTO bud(beløp,idkjoper,idgjenstand) VALUES 
   (%s,%s,%s)",

             $tilkobling->real_escape_string($_POST["lstnavn"]),
             $tilkobling->real_escape_string($_POST["lstbeskrivelse"]),
             $tilkobling->real_escape_string($_POST["txtbeløp"])


     );

     $tilkobling->query($sql);

header("Location: budok.php");
  

   ?>

这是我的表格:

     <main>
        <h1> Gi bud</h1>
<br/>

<form method="post">

    <label for="lstnavn">Budgiver:</label>
    <select name="lstnavn" id="lstnavn">
     <?php while($rad=mysqli_fetch_array($datasett))  ?>
     <option value="<?php echo $rad["idkjoper"]; ?>"> 
      <?php echo $rad["navn"], ($rad['etternavn']); ?>
         </option>
        <br><br>
     <?php  ?> <br><br>
     </select>

    <br>

    <form method="post">
    <div>
    <label for="lstbeskrivelse">gjenstand:</label>
    <select name="lstbeskrivelse" id="lstbeskrivelse">
     <?php while($rad=mysqli_fetch_array($datasett1))  ?>
         <option value="<?php echo $rad["idgjenstand"]; ?>"> <?php echo 
      $rad["beskrivelse"]; ?>
         </option>
        <br><br>
     <?php  ?> <br><br>
     </select>

    <br>

     <label for="txtbeløp">beløp:</label>
    <input type="text" name="txtbeløp" id="txtbeløp" 
      placeholder="beløp" /> <br/><br>





    <br/>
    <button type="submit" name="submit">Publiser</button>
    </form>


   </main>

【问题讨论】:

你的 INSERT 不应该有 WHERE 子句 感谢您的回复,我删除了插入语句中的 where 子句,但不幸的是它并没有解决问题。 @NigelRen 注意 你应该知道,没有什么叫做 PHP 表单。它被称为 html 表单。 PHP 没有表单。 【参考方案1】:

你的错误:

    您的查询包含 3 个列名,您的值-部分 4 %s real_escape_string() 不会在字符串中添加引号,请使用 ".. VALUES('%s', '%s', '%s')" 或查看准备好的语句

如何调试:

$tilkobling-&gt;query() 在失败时返回 false,在这种情况下使用 var_dump($tilkobling-&gt;error) 显示错误消息,当然还有 var_dump($sql) 以查看真正发送到 MySQL 的内容。

【讨论】:

更新了我的答案 感谢您的回复,我将值更改为 3 %s 并更改了添加的 var_dump($tilkobling->error) 我收到此消息:string(153) "bad query:INSERT INTO bud ('beløp,idkjoper,idgjenstand') 值 ('7500','3','1')" @petervanderwal – bud('beløp,idkjoper,idgjenstand')

以上是关于php表单没有插入到sql数据库的主要内容,如果未能解决你的问题,请参考以下文章

将html表单中的数据插入sql数据库(html,php,sql)时未保存输入的值

从表单插入 sql 表时遇到问题 [重复]

PHP sql插入无法从html表单工作[重复]

PHP将数据插入SQL数据库表产生空白行

Ajax 无法正常工作。 PHP 无法在 SQL 中插入数据

使用foreach从动态post数组插入sql