为啥我不能用这个表单将数据插入我的数据库?
Posted
技术标签:
【中文标题】为啥我不能用这个表单将数据插入我的数据库?【英文标题】:Why can't I insert data into my database with this form?为什么我不能用这个表单将数据插入我的数据库? 【发布时间】:2019-09-07 17:45:50 【问题描述】:我尝试了几个我在互联网上遇到的代码,但我无法达到我的目标,即创建一个具有 3 个下拉列表的表单,然后将插入的数据输入到 SQL 表中。
我的代码没有按预期工作,两周以来我一直在努力解决这个问题。因此,我将不胜感激任何减轻这种情况的帮助。
<?php
$ligacao = new mysqli("localhost", "root", "", "pap");
if ($ligacao->connect_errno == 0)
if (isset($_POST['submit']))
$instic = $conn->query("INSERT INTO tickets(problema, eletrecidade, agua, assunto, info) VALUES('" . $_POST["prob"] . "', '" . $_POST["elet"] . "','" . $_POST["agua"] . "','" . $_POST["ass"] . "','" . $_POST["info"] . "')");
$instic->bind_param("sssss", $_POST["prob"], $_POST["elet"], $_POST["agua"], $_POST["ass"], $_POST["info"]);
$instic->execute();
$ligacao->close();
?>
<form method="POST" action="inserir.php" enctype="multipart/form-data">
<fieldset>
<!-- Escolher problema geral -->
<label>Problema Geral</label>
<select name="prob">
<option disabled selected hidden>Escolha uma opção...</option>
<option name="luz" value="Luz">Luz</option>
<option name="agua" value="Agua">Agua</option>
<option name="ele" value="Elevador">Elevador</option>
</select>
<!-- Escolher problemas eletrecidade -->
<label>Eletrecidade</label>
<select name="elet" id="elet">
<option disabled selected hidden>Escolha uma opção...</option>
<option name="semluz" value="Nao ha luz">Não há luz</option>
<option name="curto" value="Curto Circuito">Curto circuito</option>
</select>
<!-- Escolher problemas agua -->
<label>Agua</label>
<select name="agua" id="agua">
<option disabled selected hidden>Escolha uma opção...</option>
<option name="semagua" value="Nao ha agua">Não há água</option>
<option name="inund" value="Inundacao">Inundação</option>
</select>
<label for="assunto">Assunto:</label>
<input type="text" name="ass" id="ass" maxlength=100 placeholder="Assunto">
</fieldset>
<fieldset>
<label for="info">Info:</label>
<textarea type="text" name="info" id="info" maxlength=50 placeholder="Descrição detalhada"></textarea>
</fieldset>
<div>
<input type="reset" value="Limpar">
<input type="submit" value="Submeter">
</div>
</form>
【问题讨论】:
嗨@Daniel,您面临的具体问题是什么?query
与 bind_param
和 execute
没有意义。使用准备好的语句版本,在其中使用 prepare
然后绑定/执行。阅读documentation 了解您正在使用的功能/方法。
我不太了解这个,你能写一些代码来纠正我的吗?
不,我们是来帮助您完成自己的工作,而不是为您完成。看看php.net/manual/en/mysqli.prepare.php上的例子吧
好的,谢谢队友,但我不想定义变量的值,变量的值是由用户定义的,这是正确的吗? $query = "INSERT INTO 门票 (problema, eletrecidade, agua, assunto, info) VALUES (?,?,?,?,?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("sssss", $val1, $val2, $val3, $val4, $val5); $val1 = $_POST['prob']; $val2 = $_POST['elet']; $val3 = $_POST['agua']; $val4 = $_POST['ass']; $val5 = $_POST['info'];
【参考方案1】:
在inserir.php文件中:
创建与您的数据库的连接
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
使用 $_POST 获取表单数据
$prob = $_POST['prob'];
$elet = $_POST['elet'];
$agua = $_POST['agua'];
$ass = $_POST['ass'];
$info = $_POST['info'];
并使用 sql 语句插入
$sql = "INSERT INTO tickets(problema, eletrecidade, agua, assunto, info) VALUES('$prob','$elet','$agua','$ass','$info')";
确保字符串值使用 ' ' 而整数不使用。并执行命令。
if ($conn->query($sql) === TRUE)
echo "New record created successfully";
else
echo "Error: " . $sql . "<br>" . $conn->error;
$conn->close();
?>
阅读更多:https://www.w3schools.com/php/php_mysql_insert.asp
【讨论】:
首先,这不是一个答案,它充其量只是一个评论,其次,它只是一个链接,链接可能会随着时间的推移而改变,或者全部丢弃,并且您在答案中没有提供进一步的信息或解释,第三,告诉 OP 阅读和搜索网络对任何人都没有帮助。 我发送了官方文档的链接,作为评论而不是答案。我所说的对任何人都没有用的一点是“尝试阅读和搜索网络”,这也不是任何特定问题的真正答案,而不是链接本身,它可能对您有帮助,也可能对您没有帮助。 好多了,尽管您的示例很容易受到 SQL 注入攻击。 我不启动网站,只是为了学校,我不在乎sql注入,我只是真的需要正确的代码,帮助我 必须是面向对象的吗?加上从当前 html 页面中删除 PHP 代码以上是关于为啥我不能用这个表单将数据插入我的数据库?的主要内容,如果未能解决你的问题,请参考以下文章