wpdb
다른 데이터베이스 에 연결하고 싶습니다 . 인스턴스를 작성하고 데이터베이스 이름 / 사용자 이름 / 암호를 전달하려면 어떻게해야합니까?
감사
wpdb
다른 데이터베이스 에 연결하고 싶습니다 . 인스턴스를 작성하고 데이터베이스 이름 / 사용자 이름 / 암호를 전달하려면 어떻게해야합니까?
감사
답변:
네 가능합니다.
wpdb 객체를 사용하여 모든 데이터베이스에 액세스하고 테이블을 쿼리 할 수 있습니다. 절대적으로 Wordpress와 관련이있을 필요는 없습니다. 매우 흥미 롭습니다.
이점은 wpdb 클래스와 같은 모든 기능을 사용 get_results
하여 휠을 다시 발명 할 필요가 없다는 것입니다.
방법은 다음과 같습니다.
$mydb = new wpdb('username','password','database','localhost');
$rows = $mydb->get_results("select Name from my_table");
echo "<ul>";
foreach ($rows as $obj) :
echo "<li>".$obj->Name."</li>";
endforeach;
echo "</ul>";
global $wpdb
. 그러나 $ wpdb-> get_results 메소드를 실행하기 전에 다음과 같이 wp-load.php를 포함시켜야합니다. require_once('/your/wordpress/wp-load.php');
$mydb->set_prefix('wp_');
WordPress에서 두 번째 데이터베이스에 연결하는 것은 쉽습니다. WPDB 클래스의 새 인스턴스를 만들고 우리가 모두 알고 사랑하는 표준 $ wpdb 인스턴스를 사용하는 것과 같은 방식으로 사용하면됩니다.
두 번째 데이터베이스에 기본 WP 데이터베이스와 동일한 로그인 정보가 있다고 가정하면 로그인 정보 하드 코딩을 피하기 위해 wp-config.php에서 사전 정의 된 상수를 사용할 수도 있습니다.
/**
* Instantiate the wpdb class to connect to your second database, $database_name
*/
$second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_HOST);
/**
* Use the new database object just like you would use $wpdb
*/
$results = $second_db->get_results($your_query);
$second_db->set_prefix('wp_');
아무도 이것을 말하지 않았으므로 더 쉬운 방법을 추가 할 것이라고 생각했습니다 ..
추가 데이터베이스에 워드 프레스 데이터베이스와 동일한 사용자 / 패스 세부 정보가있는 한 테이블 이름 앞에 데이터베이스 이름을 사용할 수 있습니다.
$query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1');
$result = $wpdb->get_results($query);
SELECT
. 데이터를 삽입 할 수 없습니다.
이러한 기능은 작동하지만 get_post_custom 및 wordpress 쿼리와 같은 "기타"사용자 정의 기능을 사용할 수 없게됩니다. 간단한 해결책은
$wpdb->select('database_name');
데이터베이스 전체의 데이터베이스를 변경합니다 (mysql select_db). database.table 메소드는 간단한 쿼리를 원하지만 다른 워드 프레스 블로그에 액세스하려는 경우 select를 사용할 수 있습니다. 완료되면 다시 변경해야합니다. 그렇지 않으면 블로그가 이상한 일을 할 수 있습니다.
wp_get_post_terms()
새로 선택된 DB를 사용하지 않는 것 ?? 내가 시도한 다른 모든 기능 (예 get_post_meta()
: get_posts()
등)은 정상적으로 작동하지만 데이터베이스를 wp_get_post_terms()
향해 작동하는 것 같습니다 DB_NAME
. 어떤 아이디어?
나는 아직 언급 할 수는 없지만 Wadih M.의 답변을 확장하고 싶었습니다.
WP의 데이터베이스 클래스는 Justin Vincent의 ezSQL의 사용자 정의 된 버전입니다. 인터페이스가 마음에 들고 WordPress 기반이 아닌 사이트를 만들고 싶다면 http://justinvincent.com/ezsql 을 확인하십시오.