首页 > 解决方案 > 表单发布到数据库表

问题描述

我正在尝试制作一个表单,使用 index.php 和 connection.php 将 index.php 输入发布到我的数据库表中。此外,我正在尝试使用 bind_param 以数字格式指定除电话号码 (puhelinnumero) 以外的所有其他内容,但它给了我这个错误:

在此处输入图像描述

这是 index.php。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="lomake-container">
            <form action="connection.php" method="POST">
                <h2>Ilmoittautumis lomake</h2>

                <div class="lomake-block">
                    <label for ="nimi">Etunimi</label>
                    <input type="text" name="etunimi" id="nimi" placeholder="Etunimi">
                </div>

                <div class="lomake-block">
                    <label for ="sukunimi">Sukunimi</label>
                    <input type="text" name="sukunimi" placeholder="Sukunimi">
                </div>

                <div class="lomake-block">
                    <label for="male">Mies</label>
                    <input type="radio" id="male" name="sukupuoli">
                </div>

                <div class="lomake-block">
                    <label for="female">Nainen</label>
                    <input type="radio" id="female" name="sukupuoli">
                </div>

                <div class="lomake-block">
                    <label for="other">Muu</label>
                    <input type="radio" id="other" name="sukupuoli">
                </div>

                <div class="lomake-block">
                    <label for ="sähköposti">Sähköposti</label>
                    <input type="text" name="sähköposti" id="sähköposti" placeholder="Sähköposti">
                </div>

                <div class="lomake-block">
                    <label for ="salasana">Salasana</label>
                    <input type="text" name="salasana" id="salasana" placeholder="Salasana">
                </div>

                <div>
                    <label for ="puhelinnumero">Puhelin numero</label>
                    <input type="text" name="puhelinnumero" id="puhelinnumero" placeholder="Puhelin num.">
                </div>

                <input type="submit" value="Lähetä">

            </form>
        </div>
    </body>
    
</html>

这是connection.php

<?php

$etunimi = $_POST["etunimi"];
$sukunimi = $_POST["sukunimi"];
$sukupuoli = $_POST['sukupuoli'];
$sähköposti = $_POST['sähköposti'];
$salasana = $_POST['salasana'];
$puhelinnumero = $_POST['puhelinnumero'];

$servername = "localhost";
$username = "root";
$password = '';
$database = 'palvelu';


$conn = new mysqli($servername, $username, $password, $database);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}else {
    echo "Yhteys onnistui";
    $stmt = $conn->prepare("insert into lomake($etunimi, $sukunimi, $sukupuoli, $sähköposti, $salasana, $puhelinnumero)
    values(?, ?, ?, ?, ?, ?)");
}
$stmt->bind_param("sssssi",$etunimi, $sukunimi, $sukupuoli, $sähköposti, $salasana);
echo "onnistui jea";
$stmt->execute();
$stmt->close();
$conn->close();




?>

这是表格:

在此处输入图像描述

标签: phphtmlmysqlsqlmysqli

解决方案


您不能参数化列名,但无论如何我很确定这实际上不是您的意图,而且您可能稍微误解了如何构建INSERT查询。您需要指定要插入的列名。?当 MySQL 收到查询时,您当前尝试用来代替列名的变量值将通过占位符自动同化到查询中。

您也忘记将最后一个值放入bind_param命令中。

最后,你的逻辑有点缺陷——如果连接失败,那么你的代码就会死掉。没有必要else。如果它没有死,那就继续吧。

试试这个:

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

echo "Yhteys onnistui";
$stmt = $conn->prepare("insert into lomake(`nimi`, `sukunimi`, `gender`, `email`, `password`, `number`) values(?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssi",$etunimi, $sukunimi, $sukupuoli, $sähköposti, $salasana, $puhelinnumero);
echo "onnistui jea";
$stmt->execute();
$stmt->close();
$conn->close();

附言

这是 MySQL 文档参考INSERThttps ://dev.mysql.com/doc/refman/8.0/en/insert.html


推荐阅读