如果condition和mysql连接不起作用

时间:2014-07-23 13:53:19

标签: php mysql sql if-statement

我有一个连接到我的数据库的代码,应该显示文本。如果id不存在,它应该重定向我。

include ('design.php');
include ('mysqli/opendb.php');
if(empty($_GET['id']))
{
 header("Location:index.php");
}

  $stmt=$mysqli->prepare("SELECT titel, text, DATE_FORMAT(datum, '%d. %m. %Y'), autor FROM news WHERE id = ?");
   $stmt->bind_param("i",$_GET['id']);
   $stmt->execute();
   $stmt->bind_result($titel, $text, $datum, $autor);
   $stmt->fetch();
    var_dump($titel); //Result or NULL
   if(empty($titel));  // <-- isn't working / execute when $titel has a value and when it's NULL
   {  
    die(header("Location:index.php"));
   } 

我的SQL查询正在运行,我得到我的标题等,或者如果id不存在,我得到一个NULL但是我的if不是。它执行以及我得到一个结果,我不会继续。我不明白为什么。

代码来自文章显示。如果文章不存在,我应该被重定向到起始页。

(我知道这段代码不能安全地进行SQL注入,但代码的安全性超出了这个问题的范围。)

1 个答案:

答案 0 :(得分:3)

如果你的期望是脚本在没有给出id的情况下终止,请用第5行替换第5行中的第一个header()调用:

header("Location: index.php");
exit;

header()本身只是设置HTTP标头,不会影响代码流。

有关文档,请参阅http://uk.php.net/manual/en/function.header.php

至于&#34; if&#34;:后面有分号 - 这就是为什么它不起作用。