PHP PDO MYSQL ПРИСОЕДИНИТЬСЯ - PullRequest
       6

PHP PDO MYSQL ПРИСОЕДИНИТЬСЯ

0 голосов
/ 27 ноября 2009

У меня есть таблица cms_page, в которой каждая страница имеет идентификатор. Я хочу получить всю информацию из этой таблицы и всю информацию из таблицы cms_page_part, где page_id равен идентификатору, который я отправляю на страницу ... сбивает с толку, я знаю, но вот моя попытка:

require '../../config.php';
$conn = new PDO(DB_DSN, DB_USER, DB_PASS);

$id = (int)$_GET['id'];
//$q = $conn->query("SELECT * FROM cms_page WHERE id=$id"); 
$q = $conn->query("SELECT cms_page.id, cms_page.title, cms_page.slug, cms_page_part.* FROM cms_page LEFT JOIN cms_page_part ON cms_page_part.page_id=cms_page.id WHERE cms_page.id = $id"); 

$project = $q->fetch(PDO::FETCH_ASSOC);

Буду признателен за любую помощь в выяснении, как присоединиться к ним.

Ответы [ 2 ]

2 голосов
/ 27 ноября 2009

Как объединить две таблицы:

SELECT id, title, slug, cms_page_part.* FROM cms_page JOIN cms_page_part ON cms_page.id = cms_page_part.page_id WHERE cms_page.id=$id

Пример того, что я сказал в моих комментариях:

// Connect to database
$conn = new PDO(DB_DSN, DB_USER, DB_PASS);

// Page ID
$id = (int) $_GET['id'];

// Fetch page
$pageStmt = $conn->query(sprintf('SELECT * FROM cms_page WHERE id=%d', $id));
if ($pageStmt->fetchColumn() != 0) {
    $page = $pageStmt->fetch(PDO::FETCH_ASSOC);

    // Fetch parts
    $partsStmt = $conn->query(sprintf('SELECT * FROM cms_page_parts WHERE page_id=%d', $id));
    while ($part = $partsStmt->fetch(PDO::FETCH_ASSOC)) {
        // ...
    }
    $partsStmt->closeCursor();
}
$pageStmt->closeCursor();

Пример (с подготовленными утверждениями):

// Connect to database
$conn = new PDO(DB_DSN, DB_USER, DB_PASS);

// Page ID
$id = (int) $_GET['id'];

// Fetch page
$pageStmt = $conn->query('SELECT * FROM cms_page WHERE id=:id');
if ($pageStmt->execute(array(':id' => $id))) {
    if ($pageStmt->fetchColumn() != 0) {
        $page = $pageStmt->fetch(PDO::FETCH_ASSOC);

        // Fetch parts
        $partsStmt = $conn->query('SELECT * FROM cms_page_parts WHERE page_id=:id');
        if ($partsStmt->execute(array(':id' => $id))) {
            while ($part = $partsStmt->fetch(PDO::FETCH_ASSOC)) {
                // ...
            }
            $partsStmt->closeCursor();
        }
    }
    $pageStmt->closeCursor();
}
0 голосов
/ 27 ноября 2009
$q = $conn->query("SELECT cms_page.id
                    , cms_page.title
                    , cms_page.slug
                    , cms_page_part.* 
                   FROM cms_page 
                   LEFT JOIN cms_page_part ON cms_page_part.page_id = cms_page.id 
                   WHERE cms_page.id = '$id'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...