为啥我不能用这个表单将数据插入我的数据库?

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,您面临的具体问题是什么? querybind_paramexecute 没有意义。使用准备好的语句版本,在其中使用 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 代码

以上是关于为啥我不能用这个表单将数据插入我的数据库?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这段代码没有将数据插入数据库?

为啥我的数据无法插入数据库? [关闭]

为啥我不能将这些值插入到我添加到此数据库的表中?

为啥不需要的数据被推送到我的阵列中?

为啥我的改造代码没有在数据库中插入数据?

为啥这个 PHP 脚本不会在 MySQL 数据库中插入表单数据?