Проблема с передачей допустимых переменных для запроса - PullRequest
0 голосов
/ 27 октября 2011

Я передаю переменные на свою страницу 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 ]

2 голосов
/ 27 октября 2011
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 голос
/ 27 октября 2011

isset ($ query) всегда будет верным - mysqli_query () всегда будет возвращать SOMETHING, даже если это просто логическое ложное значение.

$result = mysqli_query(..);
if ($result === false) {
    die(mysqli_error());
}
if (mysqli_num_rows($result) == 0) {
   echo "variable does not exist";
} else {
   while(...) {
      ...
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...