php表单没有插入到sql数据库
Posted
技术标签:
【中文标题】php表单没有插入到sql数据库【英文标题】:php form not inserting to sql database 【发布时间】:2018-04-29 15:02:37 【问题描述】:我正在尝试进入 php 和 mysql,我已经创建了这个表格来将数据插入到我的数据库中,但是在填写表格后,没有数据被插入到 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->query()
在失败时返回 false,在这种情况下使用 var_dump($tilkobling->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)时未保存输入的值