Zend错误连接

时间:2015-08-25 03:03:43

标签: json postgresql zend-framework

我的代码有问题,第一个代码就像

<?php

    require_once('zend/json.php');
    require_once('zend/db.php');
    //require_once 'Zend/Db/Adapter/Pdo/pgsql.php';

    class jsonvi
    {
        protected $_db;
        public function _koneksi ()
        {
            try 
            {
                $this->_db = zend_db::factory('PDO_PGSQL',array( 
                'host'=>'localhost',
                'username'=>'stet',
                'password'=>'test',
                'dbname'=>'test'
            ));
                return $this->_db;                  
            }
            catch(zend_db_exception $e)
            {
                return $e->getmessage();
            }
    }
        public function getdata()
        {
            $db = $this->_koneksi();
            try
            {   


                $sql = "select * from info   ";
                $da = $db->fetchall($sql);
                $num = count($da);      
                for ($a=0;$a<$num;$a++)
                {
                    $data = $db->fetchall($sql);
                    return $data;
                }
            }
            catch (zend_db_exception $e)
            {
                return $e->getmessage();
            }
        }
    }
    $view = new jsonvi();
    $view = $view->getdata();
    echo zend_json::encode($view);

?>

它运作良好,但我想让它像

<?php

    include ('table.php');
    include ('config.php');
    require_once('zend/json.php');
    require_once('zend/db.php');
    require_once 'Zend/Db/Adapter/Pdo/pgsql.php';

    class jsonvi
    {
        protected $_db;
        public function _koneksi ()
        {
            try 
            {
                $this->_db = zend_db::factory('PDO_PGSQL',array( 
                'host'=>$dbhost,
                'username'=>$dbuser,
                'password'=>$dbpass,
                'dbname'=>$dbdb
            ));
                return $this->_db;                  
            }
            catch(zend_db_exception $e)
            {
                return $e->getmessage();
            }
    }
        public function getdata()
        {
            $db = $this->_koneksi();
            try
            {   


                $sql = "select * from ".$table;
                $da = $db->fetchall($sql);
                $num = count($da);      
                for ($a=0;$a<$num;$a++)
                {
                    $data = $db->fetchall($sql);
                    return $data;
                }
            }
            catch (zend_db_exception $e)
            {
                return $e->getmessage();
            }
        }
    }
    $view = new jsonvi();
    $view = $view->getdata();
    echo zend_json::encode($view);      
?>

我不知道这段代码有什么问题,我需要帮助。 错误消息Notice: Undefined variable: dbdb in C:\wamp.... config.php只有$dbpass = 'test';之类的代码,就像那样,我正在创建一个简单的网页,我想把我的代码编写到其他数据库和aplikasi,所以我只更改了config.phptable.php 对于table.php,如果config.php工作,可能会有效。

感谢。

1 个答案:

答案 0 :(得分:1)

您正在使用课程而不关注变量范围。

我知道你在config.php文件中有数据库连接值的变量。虽然这些变量在脚本文件中随附包含,但它们在您的课程中不可用且可访问。唯一的区别是任何带有define的常量(或全局内的变量都不是一个好主意)。

您可以在config.php中创建一个配置类,并将值设置为属性,然后在_koneksi方法中实例化该类。然后你会使用require_once而不是include。

<强>更新 这是一个与您的文件类似的示例,其中include ('config.php');与在课程开始之前直接声明变量基本相同。

// variable defined outside the class
$foo = 'foo';

class demo
{
    public $bar = 'bar';

    function test()
    {
        $foobar = 'foobar';
        echo 'Class property $bar is:' . $this->bar . PHP_EOL;
        echo 'Local variable $foobar is:' . $foobar . PHP_EOL;
    }

    function run() 
    {
        if (isset($foo)) {
            echo 'Global variable $foo is:' . $foo . PHP_EOL;
        } else {
            // This is where you have your problem.
            // Variables from outside the class are not available.
            echo 'Global variable $foo not found' . PHP_EOL;
        }
    }
}

$demo = new demo();
$demo->test();       // Class property $bar is:bar
                     // Local variable $foobar is:foobar

$demo->run();        // Global variable $foo not found

echo 'Variable $foo is: ' . $foo . PHP_EOL;  // Class property $bar is:bar