php - PHP:无法将数据保存在数据库中
问题描述
所以我在这方面有点麻烦。我不确定此信息是否重要,但此脚本在某一时刻工作,但它为每次提交制作多个记录(似乎它正在为每个输入的表单值进行提交)
例如。如果输入了名字和姓氏,将创建 2 条记录。
除此之外,这是我现在遇到问题的代码:
(连接.php)
<?php
$host = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "contacts";
$conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
if($conn)
{
echo "Connection OK!";
}
else
{
die("Connection failed");
}
?>
(index.html)
<?php
include ("connection.php");
$fn = isset ($_GET['first_name'])? $_GET['first_name'] : null;
$ln = isset ($_GET['last_name'])? $_GET['last_name'] : null;
$query = "INSERT INTO contact VALUES ('fn','ln')";
$data = mysqli_query($conn, $query);
if($data)
{
echo "Data inserted!";
}
?>
连接似乎工作得很好,因为我收到“连接正常”消息,并且变量似乎也根据表单值发生变化......但无论我现在做什么,查询都不会工作(我'如果不明显,我正在尝试用上述值填充表格)...我正在使用 Apollo 2.435 以防出现插件问题并且您知道如何解决该问题(这似乎也可以正常工作)以上所有代码都在 HTML 文档中工作)
谢谢你的帮助。
解决方案
您可以尝试准备好的语句来插入记录:
$stmt = $conn->prepare("INSERT INTO contact (firstname, lastname) VALUES (?, ?)");
$stmt->bind_param("ss", $fn, $ln);
$fn = $_GET['first_name'];
$ln = $_GET['last_name'];
$stmt->execute();