php - 为什么我的 sql-stament 没有将数据插入到我的数据库中?
问题描述
最近我使用 php 和 mysql 数据库构建了一个登录系统。我手动输入了所有用户,所以我接下来要做的是构建一个注册功能。但是由于某种原因,数据没有出现在我的数据库中。
这是我的注册页面:
<div class="login">
<div class="background">
<img src="../pic/skyscrapers.jpg"></img>
<div class="logbox">
<form class="form-register" action="../func/func_register3.php" method="POST">
<h1>Registrierung</h1>
<div class="user">
Choose your username:<br>
<label for="frm_user">username</label>
<input type="text" name="frm_user" id="frm_user" placeholder="Benutzername" required autofocus>
<br>
<br>
Choose your password:<br>
<label for="frm_pass">Password</label>
<input type="password" name="frm_pass" id="frm_pass" placeholder="Password" required>
<br>
<br>
Repeat your password:<br>
<label for="frm_pass_rep">Repetition</label>
<input type="password" name="frm_pass_rep" placeholder="Password"><br>
<br>
<br>
</div>
<button name="btn_register" id="btn_register" type="submit">register</button>
</form>
</div>
</div>
</div>
这是带有寄存器逻辑的 php 文件:
<?php
if (isset($_POST['btn_register'])) {
include("../inc/db_connect.php");
//Form fields -> php-variables
$frm_user = $_POST['frm_user'];
$frm_pass = $_POST['frm_pass'];
$frm_pass_rep = $_POST['frm_pass_rep'];
$stmt = $dbh->prepare("INSERT INTO tbl_users (username, password) VALUES (:frm_user, :frm_pass)");
$stmt->bindParam(':frm_user', $frm_user);
$stmt->bindParam(':frm_pass', $frm_pass);
if ($stmt->execute() == true):
echo "All good!";
else:
{
echo "The statement has not been executed!";
echo "<br>";
echo print_r($stmt->errorInfo, true);
echo "<br>";
echo $stmt->errorCode();
}
endif;
}
输出是“语句尚未执行!23000”,这是真的,没有数据进入数据库......我已经尝试过使用不同类型的浏览器并使用另一个数据库。登录工作非常好,两个文件,一个带有 login-logik 的文件以及一个带有 register-logik 的文件,都使用相同的文件连接到数据库。我会非常感谢有关如何解决此问题的各种想法。
解决方案
我猜你的 id 列是自动增量的。您应该将其从查询中删除:
$stmt = $dbh->prepare("INSERT INTO tbl_users (username, password) VALUES (:frm_user, :frm_pass)");
或者如果不是自动增量或者你想给它一个值,你应该为它插入一个值:
$stmt = $dbh->prepare("INSERT INTO tbl_users (id, username, password) VALUES (:id,:frm_user, :frm_pass)");
推荐阅读
- java - 使用 relativelayout 共享 TextView 内容
- c# - 在 C# 中有效地在海量文件中搜索字符串
- matlab - 从音频文件 Matlab 中去除噪声
- python - 如何计算姿势图优化器(slam)?
- c++ - 有没有办法合并两个(或多个)for循环以降低整体时间复杂度?
- kubernetes - PodDisruptionBudgets 是否优先于 HorizontalPodAutoscaler?
- python-3.x - 为什么我的列表在使用 for 循环追加后不断变化?
- regex - 正则表达式使字符串的最后一部分是可选的,如果它是可选的,则捕获所有内容
- java - 在 AWS 上导入密钥对之前,如何通过 Java 验证 OpenSSH 公钥格式?
- azure - for-each 在 azure 数据工厂中一次传递所有文件