【问题标题】:OOP PDO ; Issues with Global Variable? [duplicate]OOP PDO ;全局变量的问题? [复制]
【发布时间】:2014-01-21 12:37:08
【问题描述】:

我对 PDO 和 OOP 还是很陌生。之后,我尝试执行下面给出的代码,得到以下输出:- 致命错误:调用 C:\xampp\htdocs\Mine\OOPs\pdo progs\function 中非对象上的成员函数 query()。 php 在第 20 行。谢谢。

<?php

class main
       {

         public function __construct()
       { 

        $obj=new PDO("mysql:host=localhost;dbname=arnob-pdo",'root','');    

       }    

        public function reg()   
    {
        global $obj;
        $name=$_POST['name'];
        $email=$_POST['email'];
        $pass=$_POST['pass'];
                $sql=$obj->query("insert into memo set                                                            
                name='".$name."',email='".$email."',pass='".$pass."'");

        if($sql)
            {
             ?>

             <script type="text/javascript"> 
             alert("WELCOME <?php echo $_POST['name']; ?> to Memo"); 
             </script>
             <?php  
            }
             else echo 'Registration Failure';
       }        
        }
       $main=new main;

       ?>


        index.php:
        <?php require('function.php'); 

        if (isset($_POST['submit']))
         {  

      $exe=$main->reg();
      echo $exe; 
         } 

         ?>

带有提交表单。

【问题讨论】:

  • 错误出现在第 20 行的 C:\xampp\htdocs\Mine\OOPs\pdo progs\function.php 上。所以也发布 function.php 中的代码以进行评估。
  • 请修正您的代码格式。目前无法阅读。
  • 您实际上应该避免使用global 变量。您可能会受益于 this 解决方案。
  • 感谢 Guyzz 的快速反馈。实际上,这段没有在类中包装函数的代码是有效的。所以,想问问!是的,我只是这个概念的初学者,我必须深入挖掘。

标签: php mysql oop pdo


【解决方案1】:

类和变量的基本说明可以在文档中看到: http://php.net/oop5.basic

正如其他用户所说,使用良好的代码格式和清晰的变量描述($obj 不是描述性的)。

<?php
    class main {
        private $db;

        public function __construct(){
            $this->db = new PDO( ... );
        }

        public function reg(){
            ...
            $sql = $this->db->query( ... );
            ...
        }
    }
?>

【讨论】:

  • 你的代码片段实际上会违反 OCP .. 而且,var 的使用,因为 PHP 5.0 已被弃用
  • 这实际上也不起作用。
  • 感谢 teresko 提及,我已经编辑了代码示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
相关资源
最近更新 更多