2016-05-15 39 views
0

我有准备功能==>调用一个成员函数准备()上的空 我有丝束页classo.php索引的一个问题.PHPERROR在PDO:调用一个成员函数准备()上的空

classo.php:

<?php 

     class classo 
     { 

      function connection(){ 

       $db=new pdo ('mysql:host=localhost;dbname=pronostic','root',''); 
       $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); 

      } 



      function insererDonne($pseudo,$password) 
      {  
         global $db; 
         classo::connection();  
       $donne=array(
        'user' =>$pseudo, 
        'pass' =>$password 
        ); 

       $req="INSERT INTO users (user,pass) VALUES (:user,:pass)"; 

       $sql=$db->prepare($req); 

       $sql->execute($donne); 

      } 



     } 


?> 

的index.php:

<?php 


require('classo.php'); 


$data=new classo(); 
$data->insererDonne('dsds','tosdsta'); 


?> 

待办事项ÿ你有一个想法,我该如何解决这个问题?这是我第一次收到来自PHP的这个错误,我在PHP中使用了对象&类。有人可以帮我解决这个问题吗?

回答

1

有您的代码2个大问题:

  1. 变的知名度
  2. 静态调用

详细:

  1. 在OOP,你应该忘记全局变量。他们违反封装原则。而且,你的代码中甚至没有任何全局变量,所以global $db;行是没有意义的。在类级别声明一个私有$ db变量(property),将其初始化为connection()方法,并在insert方法中对其进行访问。

  2. 您正在调用连接方法为classo::connection();。但是,您需要声明连接方法为static。要么声明你的连接方法是静态的(但也要把$ db变成静态的),或者使用$ this将其称为常规方法。

相关问题