【发布时间】:2021-10-13 07:45:21
【问题描述】:
我希望将表单信息存储在数据库中,但我失败了。我没有收到错误,但信息未存储在数据库中。
数据库连接:
<?php
define("DB_HOST",'localhost');
define('DB_USER',"root");
define("DB_PASS","");
define("DB_NAME","test2");
try {
$conn = new PDO("mysql:host=".DB_HOST.";dbname".DB_NAME,DB_USER,DB_PASS );
$conn->setAttribute(PDO::ATTR_ERRMODE ,PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
}
并插入数据库:
<?php
require 'config.php';
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(isset($_POST['username']) && isset($_POST['password'])) {
if(!empty($_POST["username"]) && !empty($_POST['password'])) {
//echo $_POST['username'].$_POST['password'];
$user=$_POST['username'];
$pass=$_POST['password'];
$sql = "INSERT INTO userinfo (user ,pass) VALUES(:username , :password)";
$conn = new PDO("mysql:host=".DB_HOST.";dbname".DB_NAME,DB_USER,DB_PASS );
$query =$conn ->prepare($sql);
$query->bindParam(':username',$user,PDO::PARAM_STR);
$query->bindParam(':password',$pass,PDO::PARAM_STR);
$query->execute();
} else {
echo"incorrect";
}
}
}
【问题讨论】:
-
您的数据库连接中是否缺少
=符号?但是为什么要在config.php中连接到数据库,然后在主代码中再次连接呢?不知道为什么 try/catch 没有捕捉到语法错误,如果它是一个。 -
基本问题 - 你确定 PHP 代码真的被执行了吗?你验证了吗?另外我要重复 droopsnoot 所说的 - 从两段单独的代码连接到数据库两次是没有意义的。
-
P.S.
if(!empty($_POST["username"]) && !empty($_POST['password'])) {是多余的,因为它的正上方有一行。 -
在连接字符串中(两者都是!)我希望
";dbname"是";dbname="。这应该会引发异常,我原以为。