php - 表单发布到数据库表
问题描述
我正在尝试制作一个表单,使用 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();
?>
这是表格:
解决方案
您不能参数化列名,但无论如何我很确定这实际上不是您的意图,而且您可能稍微误解了如何构建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 文档参考INSERT
:https ://dev.mysql.com/doc/refman/8.0/en/insert.html
推荐阅读
- go - 如何在自定义类型上构建堆
- python-3.x - 卷曲工作,但 Python 请求失败
- java - JAVA中InputSource到字符串的转换
- ios - 我们可以在开发时使用callkit拨打电话吗?
- python - 在psychopy声音结束时不需要的点击
- python - 如何在 Pandas 中将行名转换为列
- android - PNG和JPG的React Native Expo媒体库“尚不支持此文件类型”
- javascript - 为什么我们在 JS 中对函数使用扩展运算符?
- java - 如何为 javaFX 计算器编写计算方法
- amazon-web-services - Filebeat 无法连接到 Amazon Elasticsearch Service