当字符串无效或在数据库中找到时,如何向PDO / MySQL抛出错误?

时间:2016-05-26 12:37:45

标签: php mysql pdo error-handling structure

对于我在这里尝试做的事情显而易见的道歉,我对PDO / PHP有点新意见......我目前对我的问题有点小问题可能会带来一点安全风险的网站。

我有一个视频'通过URL传递变量(video.php?id=VALUE)的页面 -

目前我的页面设置如下:

<?php 
    $video = $_GET['video'];
    $videodata = $pdo->prepare("SELECT * FROM video WHERE siteurl = ? LIMIT 1");
    $videodata->execute([$video]);
    ?>

    <head>
     <meta charset="utf-8">
     <meta http-equiv="x-ua-compatible" content="ie=edge">

     <title>   
     <?php
     foreach ($videodata as $videodatas) {
     echo "{$videodatas['title']}</title>";

     echo "<meta property=\"og:title\" content=\"{$videodatas['title']}\"/>"; }?>
     <meta name="description" content="Description lives here">

     <meta name="viewport" content="width=device-width, initial-scale=1">
     <meta name="apple-mobile-web-app-capable" content="yes">

     <meta property="og:url" content="<?php echo "http://" . $_SERVER['HTTP_HOST']  . $_SERVER['REQUEST_URI'];?>" />


     <link rel="apple-touch-icon" href="apple-touch-icon.png">

     <link rel="stylesheet" href="scripts/style.css">


    </head>

如果成功匹配,则会生成页面,显示正确的视频,并在<title>标记和整个页面的其余部分列出正确的视频标题。

然而,当我在URL中测试一个不正确的变量或者我的数据库中没有的东西时,该页面正在吐出一个完全空白的页面(没有错误),其中包含了所有的原始HTML。 <title>代码。

如何防止这种情况,而是重定向到我的404页面?

1 个答案:

答案 0 :(得分:1)

在你的sql之前加上一个条件:

if (isset($_GET['video']) && $_GET['video'] !="") {
    $video = $_GET['video'];
    $videodata = $pdo->prepare("SELECT * FROM video WHERE siteurl = ? LIMIT 1");
    $videodata->execute([$video]); 
}