2013-09-02 2 views
-1

안녕하세요,이 클래스에서는 INSERT UPDATE 함수를 사용할 수 없습니다 : MySQLiDB. 나는 mysql에 데이터를 쓰려고하는데이 데이터가 존재하면 업데이트가 필요하다. 그래서 INSERT ... ON DUPLICATE KEY UPDATE...을 사용합니다. 내 코드는 다음과 같습니다 :비 객체 MySQLiDB에서 fetch_field() 멤버 함수 호출

$db->rawQuery("INSERT INTO table1 (field1,field2,field3) VALUES (?,?,?) ON DUPLICATE KEY UPDATE field2=VALUES(field2),field3=VALUES(field3)", array("value1",value2,value2)); 

이 코드는 정상적으로 작동합니다. 하지만이 코드를 주기적으로 사용하고 다른 배열에 의해 값을 부여하면이 오류가 나에게 표시됩니다 : Call to a member function fetch_field() on a non-object in.... 이것은 주기적으로 코드입니다 :

$db->rawQuery("INSERT INTO table1 (field1,field2,field3) VALUES (?,?,?) ON DUPLICATE KEY UPDATE field2=VALUES(field2),field3=VALUES(field3)", array($value[$i][value1],$value[$i][value2],$value[$i][value3])); 

이 상황에서 나는 무엇을 할 수 있습니까?

+0

-1은 오류 메시지가 아니고 스텁 일뿐입니다. 오류로 연결되는 코드를 어떻게 알았습니까? –

+0

죄송 합니다만 죄송합니다. 치명적인 오류 : 비회원의 멤버 함수 fetch_field()를 호출하십시오. ... 정말 치명적인 오류 – iProgrammer

+0

은 여전히 ​​스텁입니다. 왜 계속해서 중요한 부분을 생략합니까? –

답변

0

MySQLiDB를 사용하지 마십시오. 여러면에서 사용할 수 없습니다. 훨씬 간단한 방법으로,

$sql = "INSERT INTO table1 (field1,field2,field3) VALUES (?s,?s,?s) 
     ON DUPLICATE KEY UPDATE field2=VALUES(field2),field3=VALUES(field3)"; 
$db->query($sql, $value[$i]['value1'],$value[$i]['value2'],$value[$i]['value3']); 

을 또는 :

대신 safemysql을 사용할 수 있습니다

foreach ($value as $row) 
{ 
    $sql = "INSERT INTO table1 SET ?u 
      ON DUPLICATE KEY UPDATE field2=VALUES(field2),field3=VALUES(field3)"; 
    $db->query($sql, $row); 
} 

(비록 신뢰할 수있는 소스에서 오는 경우에만 $value) 또한 수

단일 삽입에 대한 검색어 만들기

$ins = array(); 
foreach ($value as $row) { 
    $ins[] = $db->parse("(?s,?s,?s)",$row['value1'],$row['value2'],$row['value3']); 
} 
$instr = implode(",",$ins); 
$sql = "INSERT INTO table1 (field1,field2,field3) VALUES ?p 
     ON DUPLICATE KEY UPDATE field2=VALUES(field2),field3=VALUES(field3)"; 
$db->query($sql, $ins); 
관련 문제