【问题标题】:Connection PDO with SQLServer与 SQLServer 连接 PDO
【发布时间】:2018-12-02 05:52:41
【问题描述】:

我正在尝试与 PHP MVCSQL Server 建立新的 PDO 连接,但是当我尝试咨询我的数据库时,这会向我发送一个错误

Fatal error</b>:  Uncaught Error: Call to a member function prepare() on null

我正在尝试这样建立连接

<?php

class Conexion{

  static public function conectar(){

    $DATABASE="Database";
    $DB_USER="DBUser";
    $DB_PASSWORD="DBPassword";
    $SERVER_NAME = "ServerName";
    try
    {
      $db = new PDO("sqlsrv:Server=$SERVER_NAME;Database=$DATABASE", "$DB_USER", "$DB_PASSWORD");
      $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    }catch(PDOException $e){
      echo 'ERROR TO CONNECT' . $e->getMessage();
      die();
    }

  }

}

在另一个控制器中我这样查询

    <?php

require_once "conexion.php";

class UserModel{

    static public function mdlSearchUser($table, $data){
      $stmt = Conexion::conectar() -> prepare("SELECT CB_CODIGO FROM $table WHERE CB_ACTIVO='S' AND CB_Codigo = $data");
      $stmt->execute();
      return $stmt -> fetchAll();
      $stmt ->close();
      $stmt = null;
    }
}

【问题讨论】:

    标签: php sql-server pdo


    【解决方案1】:

    您需要返回一个代表与所请求数据库的连接的 PDO 实例。您可以尝试更改您的 conexion.php 并在成功时返回 return $db; 或在错误时返回 return false; 的 PDO 实例:

    <?php
    class Conexion {
    
        static public function conectar() {
            $DATABASE    = "tornado_tmp";
            $DB_USER     = "tornado";
            $DB_PASSWORD = "1234";
            $SERVER_NAME = "127.0.0.1\ikosoft,1066";
            try {
                $db = new PDO("sqlsrv:Server=$SERVER_NAME;Database=$DATABASE", "$DB_USER", "$DB_PASSWORD");
                $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
                return $db;
            } catch(PDOException $e) {
                echo 'ERROR TO CONNECT' . $e->getMessage();
                return false;
            }
        }
    }
    ?>
    

    并像这样使用您的Conexion 类:

    <?php
    require_once "conexion.php";
    
    class UserModel{
    
        static public function mdlSearchUser($table, $data){
            $stmt = Conexion::conectar() -> prepare("SELECT CB_CODIGO FROM $table WHERE CB_ACTIVO='S' AND CB_Codigo = $data");
            $stmt->execute();
            return $stmt -> fetchAll();
            $stmt ->close();
            $stmt = null;
        }
    }
    
    $obj = new UserModel();
    $obj->mdlSearchUser('table', 'data')
    ?>
    

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2011-07-05
      • 2016-02-05
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多