📘
WordPress|データベースに接続して情報を取得する
▼ NOTE ▼
決められたデータを取得するとき
$dsn = 'mysql:dbname={データベース名};host={ホスト名}';
$user = 'データベースのユーザー名';
$password = 'データベースのパスワード';
try{
$dbh = new PDO($dsn, $user, $password);
$stmt = $dbh->query(
'SELECT *
FROM wp_posts
WHERE post_status = "publish"
AND post_type = "post"
ORDER BY post_date DESC
LIMIT 12'
);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo('Error:'.$e->getMessage());
die();
};
$dbh = null;
foreach ($data => $value) {
var_dump($value);
};
SQL文に代入して検索するとき
パターン①
// variables
$id = $post->ID;
$meta_key = 'title';
// query
$query = $wpdb->prepare(
"
SELECT meta_value
FROM wp_postmeta
WHERE post_id = %d AND meta_key = %s
",
$id,
'%' . $meta_key . '%'
);
$results = $wpdb->get_results( $query );
$results = $results->fetchAll(PDO::FETCH_ASSOC);
▼ プレスホルダー ▼
- %s //文字列
- %d //整数
- %f //浮動小数点
パターン②
variables
$id = esc_sql($post->ID);
// query
$dbh = new PDO($dsn, $user, $password);
$query = $dbh->query(
"SELECT meta_value
FROM wp_postmeta
WHERE post_id = {$id}"
);
$results = $query->fetchAll(PDO::FETCH_ASSOC);
▼ DB接続時のエラー ▼
□ ユーザー名が異なる時
SQLSTATE[28000] [1045] Access denied for user '〇〇〇〇'@'localhost' (using password: YES)
□ ホスト名が異なる時
SQLSTATE[HY000] [2005] Unknown MySQL server host '〇〇〇〇' (11001)
□ MySQLのサーバが停止している時
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '〇〇〇〇' (10061)
Discussion