2017-07-27 97 views
0

我试图找到相同的问题/答案,但无法弄清楚。获取错误 - 致命错误:调用成员函数prepare()null在

何时访问索引。提示错误

“致命错误:调用一个成员函数准备()对空的......”

----------------- -----------代码是------------------

------------- Page1- index.php文件

<?php 
include 'inti_test.php'; 
$user_id =3; 
$user = $getFromUserClass->userData($user_id); 
?> 

-------------------第2页,inti_test.php

<?php 

    $dsn = 'mysql:host=localhost; dbname=testdb'; 
    $user = 'root'; 
    $pass = 'mypass'; 
    try{ 
     $PDO = new PDO($dsn, $user, $pass); 
    }catch(PDOException $e){ 
     echo 'Connection error!' .$e->getMessage(); 
    } 
//------------------------- 
class User{ 
protected $pdo; 

function __construct($pdo){ 
$this->pdo =$pdo; 
} 

public function userData($user_id){ 
$stmt = $this->pdo->prepare("SELECT * FROM `user_detail_master` WHERE 
`user_id`=:user_id"); 
$stmt->bindParam(":user_id", $user_id, PDO::PARAM_INT); 
$stmt->execute(); 
return $stmt->fetch(PDO::FETCH_OBJ); 
} 
} 

//--------------------- 
global $pdo; 
session_start(); 
$getFromUserClass = new User($pdo); 

?> 
+0

'$ PDO'和'$ pdo'是__different__变量。 –

+0

你有'$ PDO'用于连接和使用'$ pdo' –

+0

首先,你必须首先在页面顶部开始'session',然后你犯一个错字'$ pdo'和'$ PDO'是两件不同的事情。 –

回答

0

<?php 

    $dsn = 'mysql:host=localhost; dbname=testdb'; 
    $user = 'root'; 
    $pass = 'mypass'; 
    global $pdo; 
    try{ 
     $pdo = new PDO($dsn, $user, $pass); 
    }catch(PDOException $e){ 
     echo 'Connection error!' .$e->getMessage(); 
    } 
//------------------------- 
class User{ 
protected $pdo; 

function __construct($pdo){ 
$this->pdo =$pdo; 
} 

public function userData($user_id){ 
$stmt = $this->pdo->prepare("SELECT * FROM `user_detail_master` WHERE 
`user_id`=:user_id"); 
$stmt->bindParam(":user_id", $user_id, PDO::PARAM_INT); 
$stmt->execute(); 
return $stmt->fetch(PDO::FETCH_OBJ); 
} 
} 

//--------------------- 

session_start(); 
$getFromUserClass = new User($pdo); 

?> 
+0

请解释你做了什么改变和__why__。 –

+0

我同意你的评论 – mmmorgen

相关问题