不清楚你是怎能调用这个类的。
get_a_db_ob()这个函数做实例化PDO用的,$this->DB->query($query)之前要调用一下函数get_a_db_ob()。
看了你的例子,get_a_db_ob()其实相当于构造函数。

解决方案 »

  1.   

    调试结果是没有实例化 ..  晕 ..
     我明明有实例化啊 ... 
    $this->DB = new PDO(
    "mysql:dbname=$db_name;host=$db_host;charset=utf-8", 
    "$db_username", 
    "$db_password"
    );为什么啊 !!!~
     我用if($this->get_a_db_ob()){
       echo "true";
    }else {
      echo "false";
    }
      结果 false...
    为什么呢 ?
      

  2.   

    get_a_db_ob()并无返回值。
    if($this->get_a_db_ob())如何判断是否实例化?
    try
    {
    ..//实例化操作
    return true;
    }
    catch(...)
    {
    ..
    ..
    ..
    return false;
    }
    再做if判断。
      

  3.   

    按照你说的,在protected function insert_into_DB()里边做判断 
    if($this->get_a_db_ob()).. 判断结果是错误 ...
       
    其实在我本地测试是成功的,在别人机器上就不好使了 ... 是配置问题还是程序本身的问题 ?
      

  4.   

    if($this->get_a_db_ob()).. 判断结果是错误 ...
    ========================================
    那就是没实例化没成功,
      

  5.   

    其实在我本地测试是成功的,在别人机器上就不好使了 ... 是配置问题还是程序本身的问题 ?
    ================================================================================
    这个……别人的机器,有可能没开PDO扩展,你在本地测试成功,插入的数据处理能正常入库?
      

  6.   

    别人机器应该装PDO了 , 因为如果没装会提示找不到class PDO
     
    我在本地测试完全正确,插入数据库、提取数据都正常 。我想问下,我那段程序符合规范吗 ?
      

  7.   

    错误就在这儿
    $query = "INSERT INTO `$this->table_name` ($fields) VALUES ($values)";
    if(!$this->DB->query($query)){ ... }现在提示query找不到对象 .. 就是找不到$this->DB ...
    可我明明有实例化啊 !~
      

  8.   

    <?php require_once("class_basic.php");class news extends BasicModel{

    protected $id     = NULL;
    protected $title = NULL;
    protected $datetime     = NULL;
    protected $keyword = NULL;
    protected $category     = NULL;
    protected $content = NULL;
    protected $views = NULL;


    public function __construct(){

    $this->set_primary("id");   $this->set_table_name("news");
      
    $fieldList = array("id","title","datetime","keyword","category","content","views");

    $this->set_field_list($fieldList);

    $this->get_a_db_ob();

     }
    public function create(){

    if ($this->insert_into_DB()==true){
    return true;
    }else {
    return false;
    }

    }

    }?>就是这个 ...  它调用class_basic.php里边的insert_into_DB()遇到query错误 ..
    我不明白的就是为什么在本地可以测试成功 ?
    到底哪不规范 ?
    我本地的register_golbals = On ,别人机器是Off ,但我把本地设置为Off还是运行成功。。可见跟这个配置没关系 
      

  9.   

    我不明白的就是为什么在本地可以测试成功 ?
    到底哪不规范 ?
    ------------------------------------------------
    这么看来问题应该是无法实例化PDO,请确认所需的配置是否完成。http://www.vshj.com/formality/2006/200611/20061101225905.shtml
      

  10.   

    你意思是可能PDO安装不正确吧 ?
      但我记得PDO要是没装提示错误是找不到class PDO 
    郁闷了 
      

  11.   

    你给的这个网页我看过   那是在WIN系统下的 。。我本地就是那样 。。
       我在朋友机器(LINUX)上测试就不成功了 。。
     是不是PDO没装好 ,。。 LINUX下PDO怎么安装啊 ?
      

  12.   

    不好意思,对linux不熟。看看:
    http://doc.sheup.com/linux/linux4579.htm
      

  13.   

    既然你在win下测试成功,说明程序运行无错。
    当然你可以一步步调试(比如try{..}catch{echo '无法实例化';}之类)看到底问题根源在哪,我的意见是你朋友机器PDO未安装.:-).
      

  14.   

    恩 ..  我再装PDO试下 ..你给的那个网站很好..
     介绍了LINUX下的安装 ..谢谢啊 !!!其实我之前在本地也出过这个错,后来我把环境从新安装,又好了 ..
     所以我一直认为是哪的配置有问题...  或者是程序本身不规范..
      

  15.   

    拷贝你代码运行了下,改了点无关紧要的东西,是成功的,win下.
    你可以phpinfo()下,查找PDO,看是否支持PDO.
      

  16.   

    你在WIN下还是LINUX下测试的 ?