2013-08-11 2 views
0

다른 기능에 커밋이 내 문제입니다 : 기능 A에서Mysqli 내가 많은 기능을 가진 PHP 클래스가

내가 할 내가 원하기 때문에 데이터베이스 에 삽입을 준비하지만 커밋하지 마십시오위한 몇 가지 단계 그것은이 코드와 같은 다른 함수 (B 함수)에 있습니다. 그러나 데이터베이스에는 아무 행도 삽입되어 있지 않습니다.

아이디어가 있으십니까? 이것에

public static function functionA($id, $email, $password, $name, $surname) { 

    global $mysqli; 

    $mysqli = self::getDb(); //with $mysqli->autocommit(FALSE); 

    if (!($stmt = $mysqli->prepare('INSERT INTO User (Id, mail, Password, Name, Surname) VALUES (?,?,?,?,?)'))){ 

      self::closeDatabase($mysqli, $stmt); 
      die; 
    } 

    if (!$stmt->bind_param("sssss", $id, $email, $password, $name, $surname)) { 

     self::closeDatabase($mysqli, $stmt); 
     die; 
    } 

    if (!$stmt->execute()) { 

     self::closeDatabase($mysqli, $stmt); 
     die; 
    } 

} 
public static function functionB() { 

    global $mysqli; 

    $mysqli->commit(); 

    self::closeDatabase($mysqli, $stmt); 
} 
+0

어떻게 property_을 _using 및 global''사용하지 어떻습니까? –

+0

질문에 코드 및 쿼리 예제를 추가하십시오. –

+0

지금은 – giorgio83

답변

0

변경이 코드

if (!($stmt = $mysqli->prepare('INSERT INTO User (Id, mail, Password, Name, Surname) VALUES (?,?,?,?,?)'))){ 


    self::closeDatabase($mysqli, $stmt); 
    die; 
} 

: 모든 쿼리에 대한

$sql = 'INSERT INTO User (Id, mail, Password, Name, Surname) VALUES (?,?,?,?,?)'; 
if (!($stmt = $mysqli->prepare($sql))) 
{ 
    throw new Exception($mysqli->error." [$sql]"); 
} 

모든

덕분에,이 내 샘플 코드입니다.
그런 다음 PHP 오류가 표시되는지 확인하십시오.
그런 다음 코드를 다시 실행하십시오.

+0

처럼 난 단지 semplify에 대한 기능의 이름을 변경 한 후 – giorgio83

+0

프로그래머는 절대로 생각해서는 안됩니다. * 그러나 확실히 알고 있습니다. –

+0

난 당신의 제안에 내 코드를 변경하지만 난 그런 당신이 같은 mysqli 인스턴스의 확인해야 커밋 경우에만 같은 result..the 쿼리 작업 functionA – giorgio83