0

スクリプトに問題があります。次のエラーが表示されます: 致命的なエラー: 空のプロパティにアクセスできません

コードは次のとおりです。

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";
    }

}

前もって感謝します...

4

2 に答える 2

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']);
于 2013-10-03T08:39:16.287 に答える
0
  • この $dbh は設定されていないため、$this->null->beginTransaction() になります。
  • beginTransaction() は bool を返すため、$stmt は PDOStatement ではなく bool になります

-

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

おそらく次のようなものになるはずです

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

... を挿入クエリに置き換えます。

  • 1 つのクエリだけにトランザクションは必要ありません。
于 2013-10-03T08:39:17.007 に答える