PHP和PDO问题

时间:2011-06-09 16:50:42

标签: php pdo

所以我是PDO的初学者,我在做一些看似简单的事情时遇到了麻烦。我不能让我的表更新,它不会给我任何错误。看看:

<?php

  $host   = 'localhost';
  $dbname = 'postGal';
  $user   = 'user';
  $pass   = 'pass';

  $DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  
  $DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   

  catch(PDOException $e) {  
    echo "Reported Error";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);  
  }

  class person {  
    public $f_name;  
    public $l_name;   

    function __construct($f,$l) {  
        $this->f_name = $f;  
        $this->l_name = $l;  
    }  
  }  

  $person = new person('John','Doe');  

  $STMT = $DB->("INSERT INTO users (f_name, l_name) value (:f_name, :l_name)");  
  $STMT->execute((array)$person); 

?>

此外,我知道该表,一切正常,因为我可以使用mysql或mysqli执行相同的语句。谢谢!

2 个答案:

答案 0 :(得分:2)

你必须拥抱可能在try-block中抛出异常以捕获抛出异常的代码块。

Manual

还必须在insert-statement中说VALUES而不是VALUE。

你也完全误用了准备好的陈述。有关简单示例,请参阅手册。例如,您必须在某个时刻调用prepare-method,并且您的数组转换很奇怪,不确定您要做什么。

我也在这里嗅到一个巨魔。

答案 1 :(得分:0)

也许catch希望成为set_error_handler$DB->("INSERT错过了prepare方法。最后,我认为你不能像这样将对象转换为数组。也许你想要get_object_vars并操纵它成为所需的数组(以冒号开头的键),但那么对象是什么?只需使用数组。