2016-06-24 7 views
1

I`m上のPDOでの作業となりましたステートメントと私はトランザクションを実装したいが、私はそれを行うとき、私はこのエラーを取得する準備:エラー:のbeginTransaction()非オブジェクト

Call to a member function beginTransaction() on a non-object in 

をコードは

include_once '../../includes/db_connect.php'; 
include_once '../../includes/psl-config.php'; 
$mysqli->query("SET NAMES 'utf8'"); 
date_default_timezone_set('America/Mexico_City'); 
$hora = date("d-m-Y g:i a"); 

$mysqli->beginTransaction(); 

//OBTENCIÓN DE LA INFORMACIÓN 
$id = $mysqli->real_escape_string($_POST["id"]); 
$fechaEntrada = date("Y-m-d"); 
$estatus = "Disponible"; 
$idUser = $mysqli->real_escape_string($_POST['idUser']); 
$idUser = $idUser . " " . $hora; 

//SELECIONAR INFORMACIÓN DE LA MAQUINA A ENTRAR 
$sqlMaquina = "SELECT tipo, clave FROM maquinas_orden_renta WHERE id = $id"; 
$res = $mysqli->query($sqlMaquina); 
$rows = $res->num_rows; 
if (!$res) 
    printf("Error message: %s\n", $mysqli->error); 
$objMaquinaRenta = $res->fetch_object(); 
$tipoMaquina = $objMaquinaRenta->tipo; 
$idMaquina = $objMaquinaRenta->clave; 

$sql = "UPDATE maquinas_orden_renta SET entradaReal = ?, estatus = ?,updated_by = ? WHERE id = ?"; 
$stmt = $mysqli->prepare($sql); 
if (false === $stmt) 
    die('prepare() failed: ' . htmlspecialchars($mysqli->error)); 

$rc = $stmt->bind_param('sssi', $fechaEntrada, $estatus, $idUser, $id); 
if (false === $rc) 
    die('bind_param() failed: ' . htmlspecialchars($stmt->error)); 

$rc = $stmt->execute(); 


if (false === $rc) 
    die('execute() failed: ' . htmlspecialchars($stmt->error)); 
else{ 
    if ($tipoMaquina == "conID") { 
     $sql2 = "UPDATE maquinas SET estatus = ?, updated_by = ? WHERE IdMaquina = ?"; 
     $stmt = $mysqli->prepare($sql2); 
     if (false === $stmt) 
      die('prepare2() failed: ' . htmlspecialchars($mysqli->error)); 

     $rc2 = $stmt->bind_param('ss', $estatus, $idUser, $idMaquina); 
     if (false === $rc2) 
      die('bind_param2() failed: ' . htmlspecialchars($stmt->error)); 

     $rc2 = $stmt->execute(); 

     if (false === $rc2) 
      die('execute2() failed: ' . htmlspecialchars($stmt->error)); 
     else 
      echo "Éxito"; 
    } 
} 
if (false === $rc AND false === $rc2) { 
    echo "exito"; 
    $mysqli->commit(); 
}else{ 
    $mysqli->rollBack(); 
    echo "error: $error"; 
} 

$stmt->close(); 

です。したがって、関数beginTransactionが間違っているかどうかはわかりません。

+0

「PDO」、「mysqli」を混在させています。あなたは何をしているのですか? –

+0

あなたは正しいです、それはPDOではありません。オブジェクト指向の方法でMySQLiです –

答えて

0

接続ではステートメントではなく、$mysqli->begin_transaction();である必要があります。トランザクションでは、複数の単一ステートメントを実行します。

http://php.net/manual/en/mysqli.begin-transaction.php

+0

それは動作しません。それは言う:未定義のメソッドを呼び出すmysqli :: beginTransaction() –

+0

申し訳ありません、mysqliのbegin_transaction、私は答えを更新します。 しかしあなたの質問では、あなたはPDOについて述べているので、私はu_muldersの質問をバックアップする必要があります。 – Mairu

+0

私はあなたが言うように使用しましたが、私はまだ同じエラーが発生します。そして私はPDOを置くことを知っているが、それは間違っている。オブジェクト指向の方法でMySqliを見ることができるので、 –

関連する問題