2011-08-16 3 views
2

간단한 플러그인을 만들었습니다. 백엔드에 구성 사이트가 있고 사용자 사이트에 몇 가지 기능이 있습니다. 일부 사용자 선택을 데이터베이스에 저장해야합니다. 처음에는 $ wpdb-> insert() 및 $ wpdb-> update() 메서드를 사용했지만 https://codex.wordpress.org/wpdb_Class#Protect_Queries_Against_SQL_Injection_Attacks을 읽은 후에 $wpdb->query($wpdb->prepare())으로 변경하려고합니다.

그러나 새 선택 쿼리없이 방금 삽입 한 행의 ID를 얻으려면 어떻게해야합니까? 만약 $ wpdb-> insert_id에 $ wpdb-> insert()를 사용한다면 $ wpdb-> query()를 사용하면이 필드는 비어 있습니다 ...

답변

5

$ wpdb-> insert)와 $ wpdb-> update()를 사용하면 암시 적으로 $ wpdb-> prepare() 함수와 그 보호 기능을 사용하게됩니다.

예를 들어

워드 프레스 $ wpdb-> 갱신() 함수는 마지막 두 줄이 있습니다

$sql = "UPDATE `$table` SET " . implode(', ', $bits) . ' WHERE ' . implode(' AND ', $wheres); 
return $this->query($this->prepare($sql, array_merge(array_values($data), array_values($where)))); 

을 따라서 삽입 된 ID를 얻을 수 및 보호, 당신이 $ wpdb-를 사용하는 것이 좋습니다> 삽입().