wpdb를 사용하여 별도의 데이터베이스에 연결
-
-
다른 MySQL 데이터베이스 또는 다른 데이터베이스 유형?일반 WordPress 데이터베이스에 계속 액세스하고 싶습니까? 아니면 사이트를 한 DB에서 다른 DB로 이동하고 있습니까?Another MySQL database, or another database type? Do you still want access to the regular WordPress database, or are you moving the site from one DB to another?
- 0
- 2010-09-10
- EAMann
-
예,다른 MySQL 데이터베이스입니다.동일한 서버에있는 별도의 DB이며 Wordpress가 아닙니다.워드 프레스 안에 표시하고 싶은 정보가있는 사용자 지정 db입니다.Yes, another MySQL database. It's a separate DB on the same server, and it's not a Wordpress one. It's a custom db, with information I want to display inside wordpress.
- 1
- 2010-09-10
- Wadih M.
-
$ wpdb 객체로 그렇게했다면 가능하다면 나머지 워드 프레스와 기존 데이터베이스의 연결을 끊을 것입니다.따라서 권장하지 않습니다.또 다른 옵션은 WordPress에서 사용하는 EZSQL을 사용하여 새 인스턴스를 만드는 것입니다.EZSQL은php-pdo-mysql,php-mysql 또는php-mysqli를 사용해야하는 것을 추상화하는 계층이기 때문에 사용한다고 생각합니다.If you did that with the $wpdb object, if it were even possible, it would disconnect the rest of WordPress from its existing database. So, not recommended. Another option is to create a new instance using EZSQL, which is used by WordPress. I think EZSQL is used because it's a layer that abstracts you from having to use php-pdo-mysql, php-mysql, or php-mysqli, not knowing which might be installed on a given server.
- 1
- 2010-09-10
- Volomike
-
네 가능합니다.wpdb를 인스턴스화하여 모든 데이터베이스에 액세스하고 테이블을 쿼리 할 수 있습니다.Yes it's possible. wpdb can be instantiated to access any database and query any table.
- 3
- 2010-09-10
- Wadih M.
-
6 대답
- 투표
-
- 2010-09-10
예,가능합니다.
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>";
Yes it's possible.
The wpdb object can be used to access any database and query any table. Absolutely no need to be Wordpress related, which is very interesting.
The benefit is the ability to use all the wpdb classes and functions like
get_results
, etc so that there's no need to re-invent the wheel.Here's how:
$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>";
-
부야.정확한 답변을 차단하기 위해 질문 자체에 추가 된 모든 댓글이 너무 나쁩니다.Booyah. Too bad all those comments added up on the question itself to block your accurate answer.
- 4
- 2010-09-11
- jerclarke
-
@Jeremy Clarke : 동의합니다.동료 워드 프레 서들이 허위 정보를 무고하게 퍼 뜨리지 않도록 더 조심하기를 바랍니다.@Jeremy Clarke: I agree. Hoping our fellow wordpressers will be more careful to not innocently spread out disinformation.
- 0
- 2010-09-20
- Wadih M.
-
`global $ wpdb`를 사용하여 시간을 절약 할 수도 있습니다.그러나 $ wpdb->get_results 메소드를 실행하기 전에 wp-load.php를 다음과 같이 포함해야합니다. `require_once ( '/your/wordpress/wp-load.php');`you can also save time by using `global $wpdb`. But before firing $wpdb->get_results method, you must include wp-load.php as: `require_once('/your/wordpress/wp-load.php');`
- 1
- 2015-09-19
- Junior Mayhé
-
`$mydb-> set_prefix ( 'wp _');`를 호출하여 올바른 SQL 쿼리를 생성하도록 WP_Query 및get_post를 만들기 위해 WPDB 접두사를 설정합니다.Set WPDB prefix to make WP_Query and get_post to generate correct sql query by calling `$mydb->set_prefix('wp_');`
- 0
- 2015-10-13
- M-R
-
나는 이것이 오래된 스레드라는 것을 알고 있지만 새로운 객체로`$mydb` 변수를 스쿼시하면 연결이 열린 상태로 남을 수 있다고 생각할 수는 없습니다 (틀릴 수 있습니다).`$mydb`가 이전 호출에서 이미 인스턴스화되었는지 확인하고,그렇다면 새 인스턴스를 회전하기 전에 연결을 닫습니다.예 (죄송합니다. 주석에서 깔끔한 Markdown 코드 블록을 만들 수 없습니다) : `if ($mydb!=null) {$mydb-> close ();}`I know this is an old thread, but I can't help but feel squashing the `$mydb` variable with a new object could leave a connection open (I could be wrong). I would check to see if `$mydb` is already instantiated from a previous call, and if so, close the connection before spinning up a new instance. eg (sorry can't do neat Markdown code blocks in the comments): `if ($mydb != null) { $mydb->close(); }`
- 1
- 2020-01-21
- joehanna
-
- 2010-09-11
WordPress에서는 두 번째 데이터베이스에 쉽게 연결할 수 있습니다. WPDB 클래스의 새 인스턴스를 만들고 우리 모두가 알고 사랑하는 표준 $ wpdb 인스턴스를 사용하는 것과 동일한 방식으로 사용하면됩니다.
두 번째 데이터베이스에 기본 WP와 동일한 로그인 정보가 있다고 가정하면 wp-config.php의 사전 정의 된 상수를 사용하여 로그인 정보를 하드 코딩하지 않아도됩니다.
<사전> <코드>/** * wpdb 클래스를 인스턴스화하여 두 번째 데이터베이스 인 $ database_name에 연결합니다. */ $ second_db=새로운 wpdb (DB_USER,DB_PASSWORD,$ database_name,DB_HOST); /** * $ wpdb를 사용하는 것처럼 새 데이터베이스 개체를 사용합니다. */ $ results=$ second_db- >get_results ($ your_query);Connecting to a second database is easy in WordPress, you simply create a new instance of the WPDB class and use it the same way you would use the standard $wpdb instance we all know and love.
Assuming the second database has the same login information as the main WP one you can even use the predefined constants from wp-config.php to avoid hardcoding the login information.
/** * 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);
-
이것은 Wadih의 답변과 다소 중복되지만 내 코드 예제가 조금 더 명확하고 db 로그인 상수를 기억하는 것도 중요하다고 생각합니다. db 로그인 상수는 거의 항상 사용하기에 적합하며 그렇지 않으면 dev-> stage-> 로그인 세부 정보가 변경 될 수있는 라이브 환경.This is somewhat redundant to Wadih's answer but I think my code example is a bit clearer and its also important to remember the db login constant's as they are almost always the right ones to use and otherwise you risk issues when moving from dev->stage->live environments where the login details might change.
- 0
- 2010-09-11
- jerclarke
-
`$ second_db-> set_prefix ( 'wp _');`를 호출하여 WP_Query를 만들도록 WPDB 접두사를 설정하고,올바른 SQL 쿼리를 생성하도록get_post를 설정합니다.Set WPDB prefix to make WP_Query and get_post to generate correct sql query by calling `$second_db->set_prefix('wp_');`
- 0
- 2015-10-13
- M-R
-
- 2010-12-29
아무도이 말을하지 않았기 때문에 더 쉬운 방법을 추가하겠다고 생각했습니다 ..
추가 데이터베이스에 워드 프레스 데이터베이스와 동일한 사용자/패스 정보가있는 한,이와 같이 테이블 이름 앞에 데이터베이스 이름을 사용할 수 있습니다.
$query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1'); $result = $wpdb->get_results($query);
no one has said this so I thought I'd add an even easier way..
as long as your additional database has the same user/pass details to access it as your wordpress database you can use the database name before the table name like this
$query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1'); $result = $wpdb->get_results($query);
-
내 경험상 이것은 _get_ 데이터,즉`SELECT`를 사용하는 경우에만 작동합니다.데이터를 삽입 할 수 없습니다.From my experience, this only works to _get_ data, i.e. using `SELECT`. You can't insert data.
- 0
- 2015-06-28
- Protector one
-
외부 적으로는 작동하지 않습니다.it will not work externally,
- 0
- 2019-01-31
- Wasim A.
-
- 2011-04-08
이러한 기능은 작동하지만get_post_custom 및 wordpress 쿼리와 같은 "기타"사용자 지정 기능을 사용할 수 없게됩니다.간단한 해결책은
$wpdb->select('database_name');
시스템 전체에서 데이터베이스를 변경합니다 (mysql select_db).database.table 메서드는 간단한 쿼리를 작성하려는 경우 작동하지만 다른 워드 프레스 블로그에 액세스하려면 select를 사용할 수 있습니다.완료되면 다시 변경해야합니다. 그렇지 않으면 블로그에서 이상한 작업을 수행 할 수 있습니다.
While these will work, you'll lose the ability to use the "other" custom features such as get_post_custom and wordpress queries. The simple solution is
$wpdb->select('database_name');
which changes the database system-wide (a mysql select_db). The database.table method works if you just want to make a simple query, but if you want to access another wordpress blog you can use select. You'll just need to change it back when you're done or your blog may do strange things.
-
이 솔루션을 사용하고 있으며 한 가지를 제외하고는 훌륭하게 작동합니다.알 수없는 이유로`wp_get_post_terms ()`가 새로 선택한 DB를 사용하지 않는 것 같습니까??내가 시도한 다른 모든 기능 (`get_post_meta ()`,`get_posts ()`등)은 잘 작동하는 것 같지만`wp_get_post_terms ()`는`DB_NAME` 데이터베이스에서 작동하는 것 같습니다.어떤 아이디어?I'm using this solution and it works great, except for one thing. For some unknown reason `wp_get_post_terms()` doesn't seem to use the newly selected DB?? Every other function I've tried (like `get_post_meta()`, `get_posts()` etc) seems to work just fine but `wp_get_post_terms()` seems to work towards the `DB_NAME` database. Any ideas?
- 0
- 2013-07-09
- powerbuoy
-
- 2010-09-10
아직 댓글을 달 수 없지만 Wadih M.의 답변을 확장하고 싶었습니다 (좋습니다).
WP의 데이터베이스 클래스는 Justin Vincent의ezSQL의 맞춤형 버전입니다.인터페이스가 마음에 들고 WordPress 기반이 아닌 사이트를 만들고 싶다면 다음을 확인해보세요. http://justinvincent.com/ezsql
I can't comment yet, but I wanted to expand on Wadih M.'s answer (which is great).
WP's database class is a customized version of Justin Vincent's ezSQL. If you like the interface and you're wanting to do a site that's not WordPress-based, you might want to check it out: http://justinvincent.com/ezsql
-
ezSQL은 WPDB에서 온 나에게 정말 실망 스러웠습니다."준비"문,"삽입"또는 "업데이트"가 없습니다 ... 저는 전체 WPDB 클래스를 존재하는 그대로 사용하는 것을 좋아합니다. 이것은 BackPress에서 몇 개의 파일을 프로젝트에 포함함으로써 가능합니다.ezSQL was really frustrating for me, coming from WPDB. No "prepare" statements, no "insert" or "update"... I like to use the entire WPDB class as it exists, which is possible by including a couple files out of BackPress in your project.
- 0
- 2011-04-22
- goldenapples
-
@gabrielk 링크가 죽었습니다. 새 링크 : [1] [1] : http://justinvincent.com/ezsql@gabrielk The link is dead - new one is: [1] [1]: http://justinvincent.com/ezsql
- 0
- 2013-11-23
- Hexodus
-
- 2011-04-22
2 개의 블로그를 업데이트해야하는 상위 사이트에서 두 번째 블로그 데이터베이스에 연결하기 위해
$wpdb
를 사용하는 데 어려움을 겪고있었습니다.두 번째 데이터베이스를 선택하기 위해$wpdb->select($dbname, $dbh)
를 사용했지만 여전히 첫 번째 데이터베이스에서 결과를 얻었습니다.두 번째 데이터베이스에서 WP 함수를 호출하기 전에
wp_cache_flush()
를 호출하여 WordPress 캐시를 지워 문제를 해결했습니다.I was struggling with using
$wpdb
to connect to a second blog database from a parent site that needs to update two blogs. I used$wpdb->select($dbname, $dbh)
to select the second database, but I was still getting results from the first database.I resolved the problem by calling
wp_cache_flush()
to clear the WordPress cache before calling WP functions on the second database.
wpdb
를 다른 데이터베이스에 연결하고 싶습니다.인스턴스를 생성하고 데이터베이스 이름/사용자 이름/암호를 전달하려면 어떻게해야합니까?감사합니다