【问题标题】:No connection to the database in pdopdo中没有连接到数据库
【发布时间】: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"]) &amp;&amp; !empty($_POST['password'])) { 是多余的,因为它的正上方有一行。
  • 在连接字符串中(两者都是!)我希望";dbname" 是";dbname="。这应该会引发异常,我原以为。

标签: php mysql pdo


【解决方案1】:

从您的配置中删除数据库连接并在您的代码中尝试此代码:

<?php
require 'config.php';

if($_SERVER['REQUEST_METHOD'] == "POST") {
    if(isset($_POST['username']) && isset($_POST['password'])) {

        $user=$_POST['username'];
        $pass=$_POST['password'];

        $sql = "INSERT INTO userinfo (user, pass) VALUES($user, $pass);";
        
        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();
        }

        $query =$conn ->prepare($sql);

        $query->execute() ? print 'Success' : print 'Error';

    } else {
        echo"incorrect";
    }
}
?>

我在我的服务器上试过,它对我有用,所以它也应该对你有用。

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2015-01-14
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2016-02-22
    • 2014-08-11
    • 1970-01-01
    相关资源
    最近更新 更多