代码之家  ›  专栏  ›  技术社区  ›  Jesper Lybeck

无法获取表单以插入数据

  •  0
  • Jesper Lybeck  · 技术社区  · 8 年前

    我正在努力将表单插入mysql数据库。填写表单后,我收到以下错误消息

    bad query: INSERT INTO gjenstand(idselger,bilde,beskrivelse,idkategori,minstepris,utlopsdato) VALUES (1,23.jpeg,TVbord,,950,2018-06-23)
    

    未插入的信息具有以下代码:

    $conn=mysqli_connect ("localhost","root","root", "bruktbutikk");
        $sql1="select beskrivelse from kategori";
    $datasett1 = $conn->query($sql1);
    
    
    if(isset($_POST["submit"]))
    {
        $sql =sprintf("INSERT INTO gjenstand(idselger,bilde,beskrivelse,idkategori,minstepris,utlopsdato) VALUES (%s,%s,%s,%s,%s,%s)",
    
                      $tilkobling->real_escape_string($_POST["lstnavn"]),
                      $tilkobling->real_escape_string($_POST["txtbilde"]),
                      $tilkobling->real_escape_string($_POST["txtbeskrivelse"]),
                      $tilkobling->real_escape_string($_POST["lstkategori"]),
                      $tilkobling->real_escape_string($_POST["txtminste_pris"]),
                      $tilkobling->real_escape_string($_POST["txtutlopsdato"])
    
             );
    
             $tilkobling->query($sql,$sql1) or die ("bad query:$sql");
    

    下面是缺少值的表单的代码:

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

    提前非常感谢您抽出时间来帮助我<33

    1 回复  |  直到 8 年前
        1
  •  0
  •   Barmar    8 年前

    您需要在包含字符串的值周围加引号。

    $sql =sprintf("INSERT INTO gjenstand(idselger,bilde,beskrivelse,idkategori,minstepris,utlopsdato) VALUES (%s,'%s','%s','%s',%s,'%s')",
    

    但最好使用参数化查询:

    $sql = "INSERT INTO gjenstand(idselger,bilde,beskrivelse,idkategori,minstepris,utlopsdato) VALUES (?, ?, ?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("isssis", $_POST["lstnavn"], $_POST["txtbilde"], $_POST["txtbeskrivelse"], $_POST["lstkategori"], $_POST["txtminste_pris"], $_POST["txtutlopsdato"]);
    $stmt->execute();