php - 检查数据库中是否存在变量或者是否设置了变量

标签 php mysql sql

好的,所以我希望这个代码片段检查变量 $_GET['p'] 是否存在于数据库中,如果存在则使 $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';
}

最佳答案

正如我所评论的,这只是关于代码格式和安排,这里的另一个建议在您进行故障排除时很有帮助,并且非常简单:

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 查询的问题,请参阅:

关于php - 检查数据库中是否存在变量或者是否设置了变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19751127/

相关文章:

php - Docker - 无法从 Mac 主机访问容器

php - 当字段为空时返回所有结果

PHP图像调整大小

Mysql 仅重命名 URL 结尾

sql - 在 MySQL 中, ' results in error, ` 工作正常。为什么?

sql - 如何实现SQL查询功能

php - 如何减少 wordpress 中连接查询的加载时间?

mysql - 我应该为这个缓慢的多重连接查询添加哪些索引?

javascript - 如何将 Buffer 对象转换为 Node.js 中的文件?

php - session 变量无法识别