0

さて、このコード スニペットで、変数 $_GET['p'] が DB に存在するかどうかを確認し、存在する場合は $p = $_GET['p'] を作成し、存在しない場合は $p を作成します。 = '1' で、リンクに $_GET['p'] が設定されていない場合は、id が 0 のページを表示します ($p = '0';)。これが私のコードです。リンクに変数が設定されている場合、「不明なページ」のみが表示されます。

if (isset($_GET['p']))
{
    $getpage = $_GET['p'];
    $sql     = sprintf("SELECT * FROM pages WHERE id=%d LIMIT 1", $getpage);
    $result  = $con->query($sql);
    if ($result && $result->mum_rows > 0 ){ 
        // if page id exists in "pages" table, then make $p = $_GET['p'].
        $p = $getpage;
    }
    else
    { 
        // if "p" ID doesn't exist in DB, then show "unknown page" page with id of "1".
        $p = '1';
    }
}
else if (!isset ($_GET['p'])) 
{
    //if variable "p" isn't set in link then display homepage or page with ID of 0.
    $p = '0';
}
4

1 に答える 1

1

私がコメントしたように、それは単にコードのフォーマットと配置に関するものですが、トラブルシューティングを行うときに非常に役立ち、非常に簡単な別の提案を次に示します。

function has_page_row(Mysqli $db, $pageId) 
{
    $sql    = sprintf("SELECT * FROM pages WHERE id=%d LIMIT 1", $getpage);
    $result = $db->query($sql);
    return $result && $result->mum_rows > 0;
}


$hasGet = isset($_GET['p']);
$hasRow = $hasGet && has_page_row($con, $_GET['p']);

$p = '0';
if ($hasRow) {
    $p =  $_GET['p'];
} elseif ($hasGet) {
    $p = '1';
}

has_page_rowまた、新しい関数内のコードを変更することで、不要な SQL クエリに関する問題を簡単に修正することもできます。以下を参照してください。

于 2013-11-03T08:50:41.913 に答える