PDO中的错误:在null

时间:2016-05-15 20:11:40

标签: php mysql oop pdo prepare

我的准备功能有问题==>在null上调用成员函数prepare() 我有两页 classo.php index.php

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中使用了一些新的编码对象&amp;类。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您的代码中存在两个大问题:

  1. 变量可见性
  2. 静态通话
  3. 详细说明:

    1. 在oop中你应该忘记全局变量。它们违背了封装原则。此外,您的代码中甚至没有任何全局变量,因此global $db;行无意义。在类级别(property)声明一个私有$ db变量,在connection()方法中初始化它,并在insert方法中访问它。

    2. 您正在将连接方法调用为classo::connection();。但是,您需要将连接方法声明为static。将您的连接方法声明为静态(但随后将$ db更改为静态),或使用$ this将其称为常规方法。