php - 表单中的数据不会传递到 MySQL 数据库
问题描述
我已经成功地使用各种在线教程创建了一个 php 登录表单。但是现在我希望用户能够在他们的帐户中添加一个设备,如果你愿意的话,这将链接到他们在注册网站时提供给他们的用户 ID。
我创建了第二个表来保存设备上的数据,其中包括该设备自己的自动增量 ID,这是主键。该表还有另一列作为外键的用户 ID。我想显示哪个用户拥有该特定设备。我是 PHP 和 MySQL 的新手,我似乎无法像以前使用注册表单那样将数据提交到 MySQL 数据库。
我将数据库详细信息保存在一个单独的文件夹中,并在需要时参考它:
<?php
$servername = "xxx";
$dBUsername = "xxx";
$dBPassword = "xxx";
$dBName = "xxx";
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
然后这是我的用户表单,一旦登录,就可以将新设备(跟踪器)添加到他们的帐户:
<?php
require "header.php";
?>
<main>
<?php
if (isset($_SESSION['userId'])) {
echo '<form action="includes/logout.inc.php" method="post">
<button type="submit" name="logout-submit">Log Out</button>
</form>';
echo '<form action="includes/trackerSub.inc.php" method="post">
<input type="text" name="trackeruid" placeholder="Tracker Name...">
<input type="text" name="trackerType" placeholder="Tracker Type...">
<button type="submit" name="tracker-submit">Submit</button>
</form>';
}
else {
echo '<form action="includes/login.inc.php" method="post">
<input type="text" name="mailuid" placeholder="Username/E-mail...">
<input type="password" name="pwd" placeholder="Password...">
<button type="submit" name="login-submit">Login</button>
</form>
<a href="signup.php">Sign Up</a>';
}
?>
</main>
<?php
require "footer.php"
?>
在需要 header.php 中,我保留 session_start():
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Mother Bird</title>
<link rel="stylesheet" href="master.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
然后最后在 trackerSub.inc.php 中,这是我拥有的表单操作:
<?php
if (isset($_POST['tracker-submit'])) {
require 'dbh.inc.php';
$trackeruid = $_POST['trackeruid'];
$trackerType = $_POST['trackerType'];
$idUser = $_SESSION['userId'];
if (empty($trackeruid) || empty($trackerType)) {
header("Location: ../dashboard.php?error=emptyfields");
}
else if (!preg_match("/^[a-zA-Z0-9]*$/", $trackeruid)) {
header("Location: ../dashboard.php?error=invalidtrackeruid");
exit();
}
else {
$sql = "INSERT INTO trackers (idUsers, uidTracker, trackerType) VALUES (?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../dashboard.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "iss", $idUser, $trackeruid, $trackerType);
mysqli_stmt_execute($stmt);
header("Location: ../dashboard.php?signup=success");
exit();
}
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
else {
header("Location: ../dashboard.php");
exit();
}
任何帮助都将不胜感激,正如我之前所说,我是 PHP 和 MySQL 的新手,过去两天我一直在尝试修复这些问题并进行研究,但我不太清楚我哪里出错了。
非常感谢,马达莫特
解决方案
试试这个让我知道它是否有效
if(isset($_POST['tracker-submit']))
{
require 'dbh.inc.php';
$trackeruid = $_POST['trackeruid'];
$trackerType = $_POST['trackerType'];
$idUser = $_SESSION['userId'];
if(empty($trackeruid) || empty($trackerType))
{
header("Location: ../dashboard.php?error=emptyfields");
}
else if(!preg_match("/^[a-zA-Z0-9]*$/", $trackeruid))
{
header("Location: ../dashboard.php?error=invalidtrackeruid");
exit();
}
else
{
$sql = "INSERT INTO trackers (idUsers, uidTracker, trackerType) VALUES ('$idUser', '$trackeruid', '$trackerType')";
$res = mysqli_query($conn,$sql);
if(!$res)
{
header("Location: ../dashboard.php?error=sqlerror");
exit();
}
else
{
header("Location: ../dashboard.php?signup=success");
exit();
}
}
mysqli_close($conn);
}
else {
header("Location: ../dashboard.php");
exit();
}
推荐阅读
- html - 主标签完全忽略第三个子元素
- azure - Azure 容器实例 - 无缘无故地不时重启
- wolfram-mathematica - $在mathematica界面中失败
- android - Huawei AdsKit AdListener.onAdFailed errorCode 2 是什么意思?
- google-chrome - Chrome 在达到 50 个音频输出流后不产生音频
- api - 仅按下按钮颤动时如何从coinapi获取数据
- logging - 如何在 Fluentd 配置中定义哈希(JSON 或对象)?
- sql - 在 SQL Server 中动态转换更新语句值
- reactjs - 无法将类型分配给 React 高阶组件
- python - 根据Python中的第二个列表调整列表中的元素