2010-08-24 2 views
1

삽입 실패시 mysql 서버에서 반환 된 오류 메시지를 잡으려고합니다. 아래의 방법은 데이터를 가져올 때 잘 작동하지만 아래의 'if'문은 삽입시 두 번째 데이터를 삽입합니다. 데이터를 다시 삽입하지 않고 오류 메시지를 잡으려면 어떻게 다시 쓸 수 있습니까?PHP와 mysqli를 사용하여 MySQL에 데이터를 두 번 삽입하는 것을 피하는 방법

$mysqli = new mysqli("localhost", "user", "pass", "database"); 

    $query_storeReturnedData = "INSERT INTO `eventStore` (table_key, event_type, event_date,) VALUES(NULL, 'Unix Event', '2010-08-24 12:00:00')"; 

    $mysqli->query($query_storeReturnedData); 

    if(!$mysqli->query($query_storeReturnedData)) 
    { 
    printf("Errormessage: %s\n", mysqli_error($mysqli)); 
    } 

답변

2

$mysqli->query에 두 번 전화를 했으므로 두 번 삽입됩니다. 이 방법에 대해

// run the query and collect the return value. 
$return_value = $mysqli->query($query_storeReturnedData); 

// if return value is false..query failed...print err msg. 
if(!$return_value)) { 
    printf("Errormessage: %s\n", mysqli_error($mysqli)); 
} 
+0

대체 솔루션에 대한 설명이 나와 있습니다. 함수 호출이 아닌 반환 값에 대해 평가해야합니다. 이것을 '멋쟁이!'밑에 저장하려고합니다. 감사 – JMC

2

을 :

당신은 또한 당신이 $mysqli->query의 반환 값을 수집하고 오류 검사에 사용할 수 있습니다 $mysqli->query

// no need of this. 
// $mysqli->query($query_storeReturnedData); 

// make just one call and also do err checking. 
if(!$mysqli->query($query_storeReturnedData)) { 
    printf("Errormessage: %s\n", mysqli_error($mysqli)); 
} 

에 첫 번째 통화를 제거 할 수 있습니까?

$mysqli = new mysqli("localhost", "user", "pass", "database"); 

$query_storeReturnedData = "INSERT INTO `eventStore` (table_key, event_type, event_date,) VALUES(NULL, 'Unix Event', '2010-08-24 12:00:00')"; 

if(!$mysqli->query($query_storeReturnedData)) 
{ 
printf("Errormessage: %s\n", mysqli_error($mysqli)); 
} 
관련 문제