2013-10-03 109 views
0

我的脚本存在一些问题。 我收到此错误:致命错误:无法访问空属性有一些错误的PDO脚本

的代码是:

public function insertap() 

{ 

    try 
    { 
     //echo $_POST['tranzactie'].$_POST['tip'].$_POST['tip_loc'].$_SESSION['uid']; 
      $stmt=$this->$dbh->beginTransaction(); 
      $sql="INSERT INTO `anunturi` (`tranzactie`, `tip`, `tip2`, `user`) VALUES (:tranz, :tip, :tip_loc, :user)" ; 
      $stmt->prepare($sql); 
      $data = array('tranz' => $_POST['tranzactie'], 'tip' => $_POST['tip'], 'tip_loc'=>$_POST['tip_loc'], 'user'=>$_SESSION['uid']); 
      $stmt->execute($data); 
      $stmt->commit(); 
    } 
    catch (Exception $e) 
    { 
      $stmt->rollback(); 
      echo "A aparut o eroare"; 
    } 

} 

在此先感谢...

回答

0

变化

$data = array('tranz' => $_POST['tranzactie'], 'tip' => $_POST['tip'], 'tip_loc'=>$_POST['tip_loc'], 'user'=>$_SESSION['uid']);

$data = array(':tranz' => $_POST['tranzactie'], ':tip' => $_POST['tip'], ':tip_loc'=>$_POST['tip_loc'], ':user'=>$_SESSION['uid']);
+0

我改变了,但我收到了同样的错误准备() – user2838459

+0

你给我一个ideea和现在的脚本工作......非常感谢 – user2838459

+0

我很高兴我能回馈给社区。确切的问题是什么? – Lionel

0
  • 该$ dbh未设置,因此它变成$ this-> null-> beginTransaction()。
  • 的BeginTransaction()返回一个布尔值那么$语句变成BOOL未PDOStatement对象

-

$stmt=$this->$dbh->beginTransaction(); 

或许应该像

$this->dbh->beginTransaction(); 
$sql = ... 
$stmt = $this->dbh->prepare($sql); 

替换...您的插入查询。

  • 对于只有一个查询,您不需要事务处理。
+0

调用成员函数prepare()在我更改之后的非对象 – user2838459

+0

@ user2838459 yes beginTransaction返回一个布尔值。只有一个查询,你并不需要它。 – OIS