2014-02-27 5 views
0

해고하지 않았습니다.두 번째 준비된 성명은 귀하의 시간 동안

아래에는 두 개의 prepared statement가 있습니다. & query2;

연결 문자열은

첫 번째 쿼리는 완벽하게 실행되고 데이터베이스를 업데이트하고 있습니다.

두 번째 쿼리는 오류를주지 않지만 아무것도 업데이트하지 않습니다.

"성공적인"실행 후에 기록 된 두 번째 쿼리를 보면 삽입 된 변수가 빈 문자열처럼 보입니다. 즉 RESTI = ''

왜 이런 일이 발생합니까? 두 번째 쿼리를 실행하려면 내 코드가 올바른 순서로 있습니까? 여기

$row = 1; 
$con=mysqli_connect("connect info"); 

if (mysqli_connect_errno()) 
{ 
    //echo "Failed to connect to MySQL Error 1: " . mysqli_connect_error(); 
    //error reporting done here 
} 
else 
{ 
    $con->autocommit(false); 
    $query = $con->prepare("UPDATE table where `INDEX`=?"); 
    $query2 = $con->prepare("UPDATE table2 where (SELECT column from table where`RESTI`=?)"); 

    $query->bind_param('i', $row); 
    $query2->bind_param('i', $row); 

    if($query->execute() == false) 
    { 
     //Failed! 
     /ERROR HANDLING 
    } 
    else 
    { 
     //SUCCESS    
    } 

    if($query2->execute() == false) 
    { 
     //Failed! 
     /ERROR HANDLING 
    } 
    else 
    { 
     //Success  
    } 
    $con->commit(); 
    $query->close(); 
    $query->close(); 
} 

mysqli_close($con); 
+6

나, 그래서 두 쿼리는 아무 의미도하지 않습니다을 반환해야합니다 - 둘 다 아무것도 업데이트하지 않습니다 –

+1

첫 번째 쿼리에서 데이터베이스를 어떻게 업데이트하고 있습니까? 또한 query2를 닫지 않고 대신 첫 번째 쿼리를 두 번 닫음에 유의하십시오. 정확히이 코드입니까? –

답변

0

는 update 문이 있어야 할 방법은 다음과 같습니다

"UPDATE table SET column=<new value to set> WHERE INDEX=?" 
"UPDATE table2 SET <col to update>= (SELECT column from table where`RESTI`=?) WHERE condition 

확인 RESTI는 고유의 필드와 하위 쿼리는 스칼라 값