将有效变量传递给查询时出现问题

时间:2011-10-27 16:26:49

标签: php mysql variables mysqli

我正在将变量传递到我的页面page?title=fred,但如果它是错误的值(不在数据库中),我想重定向到另一个页面:fredd


第一部分检查变量是否为空。这似乎有效。

//get variable from title
if(!isset($_GET['title']) || empty($_GET['title'])) {
    echo "no variable";
} 
else {
    $get_title = mysqli_real_escape_string($db, $_GET['title']);
    $title = str_replace("-"," ", $get_title);
} 


我无法检查我传递的变量是否在数据库中,以及是否不重定向到主页。

$query = mysqli_query($db, "SELECT title FROM persons WHERE title = '$title'");
//check that variable is in the database
if(!isset($query)){
  while($row = mysqli_fetch_assoc($query)){

    echo $row['title'];

  }
// mysqli_free_result($query);
} 
else {echo "variable does not exist";} ?>


有人可以告诉我我做错了什么以及如何解决它?谢谢,

2 个答案:

答案 0 :(得分:2)

if(!isset($query)){
始终设置

$query(您只需设置它),这样您想要的代码就永远不会执行。

你想要这个:

if (!$query) {
  echo "Query returned error";
} else if (mysqli_num_rows($query) < 1) {
  echo "Variable does not exist";
} else {
  while ($row = mysqli_fetch_assoc($query)){
    echo $row['title'];
  }
}

答案 1 :(得分:1)

isset($ query)将始终为true - mysqli_query()将始终返回SOMETHING,即使它只是一个布尔值false。

$result = mysqli_query(..);
if ($result === false) {
    die(mysqli_error());
}
if (mysqli_num_rows($result) == 0) {
   echo "variable does not exist";
} else {
   while(...) {
      ...
   }
}