使用PDO和URL变量显示数据库中的条目

时间:2016-06-06 18:24:01

标签: php pdo

我有一个通过URL传递变量的页面(video.php?video = VALUE),然后在整个页面中使用该页面来提取有关视频的各种详细信息 - 标题,静止,年份等

如果将不正确的值或数据库中没有的内容输入到URL字符串中,我想显示404 /错误,如果值正确,则显示从数据库中提取相应值的页面

目前,我只是试图获取基本代码,并编写了以下内容......

<?php include("credentials.inc"); ?>    
<?php 
$video = $_GET['video']; 
$videodata = $pdo->prepare("SELECT * FROM video WHERE site url =:siteurl LIMIT 1"); // check db for :siteurl value

$videodata->bindParam(':siteurl', $_GET['video'], PDO::PARAM_STR); // bind site url to $_Get Value...

$videodata->execute(); // execute

if($videodata->rowCount()) { // If videodata [url string] returns data then... 
 echo '<b>hello world... this entry is there!</b>';
 } else {
 echo 'NO .... ITS NOT THERE';
 }

?>

我似乎没有收到任何错误,但同时没有任何事情发生,我回来的页面只是空白。

关于我的代码出错的地方的任何指示都会受到大力赞赏!

1 个答案:

答案 0 :(得分:2)

  

@ Fred-ii致命错误:未捕获异常'PDOException',消息为'SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;检查与您的MariaDB服务器版本对应的手册,以便在'url =附近使用正确的语法?限制1' - hj8ag“

此列名称中有一个空格:

WHERE site url
          ^ it hit a hole in the road

如果这是实际列的名称,则需要勾选它。

WHERE `site url`

要么是这样,要么使用下划线和表格将其重命名为site_url

以前在评论中注明了其他语法错误。

您还应该确保对GET数组使用isset()!empty(),并且它在数据库中包含值匹配。

即:

if(isset($_GET['video'])){

    $video = $_GET['video'];

}
else {
    echo "Not set";
    }