Как проверить, если значение уже существует или вставить в мою базу данных?PHP - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь проверить, существует ли значение в моей базе данных, чтобы я мог выполнить эту строку кода.

Содержимое базы данных

enter image description here

У меня в основе есть поле таблицы moviesId.поэтому, когда я щелкаю модальное 11, тогда, если оно существует в базе данных, тогда должна отображаться ссылка Неблагоприятные , и наоборот

$data = mysqli_query($con,"SELECT * FROM movies_favorites where moviesId= '$moviesid'");
$count = mysqli_num_rows($data);
if ($count > 0) {
    echo '<a class="btn btn-sm btn-dark" data-toggle="tooltip" data-placement="right" title="Favorites" href="movies-modal.php?moviesid='.$row2['id'].'&&action=moviesfavorites">
             <i class="fa fa-heart"></i>&nbsp; Favorite
          </a>';
} else {
    echo '<a class="btn btn-sm btn-dark" data-toggle="tooltip" data-placement="right" title="DeleteFavorites" href="movies-modal.php?moviesid='.$row2['id'].'&&action=deletefavorites">
             <i class="fa fa-heart-o"></i>&nbsp; Unfavorite
          </a>';
}
?>

Если значение существует, тогда ссылка Favorite будетотобразить и, если он не существует, отобразится ссылка Unfavorite.но сейчас я ничего не получаю.и Неверная ссылка - это та, которая отображает даже те данные, которых не существует.

Ожидаемый вывод
Отображение Неверная ссылка , когда данные существуют и когда данныене существует, отображается любимая ссылка.

Ответы [ 4 ]

0 голосов
/ 12 февраля 2019

Вы действительно должны использовать подготовленные операторы для безопасности / стабильности.

Я предполагаю, что вам нужно другое условие в вашей логике WHERE, чтобы связать movieId с userId.

Вотнепроверенный фрагмент:

if (!$stmt = $conn->prepare("SELECT COUNT(*) FROM movies_favorites WHERE userId=? AND moviesId=?")) {   
    echo "Prepare Syntax Error: " , $conn->error;   // don't show this to the public
} else {
    if (!$stmt->bind_param("ii", $userid, $movieid) // if trouble while binding to ? placeholder
        || !$stmt->execute()                        // or if trouble while executing
        || !$stmt->bind_result($num_rows)           // or if trouble while binding to $num_rows
        || !$stmt->fetch()) {                       // or if trouble while fetching the one row.
        echo "Statement Error: " , $stmt->error;    // don't show this to the public
    } else {
        if ($num_rows) {                            // if not zero, enable deletion
            $title = "DeleteFavorites";
            $action = "deletefavorites";
            $icon = "fa-heart-o";
            $text = "Unfavorite";
        } else {                                    // if zero, allow to add
            $title = "Favorites";
            $action = "moviesfavorites";
            $icon = "fa-heart";
            $text = "Favorite";
        }
        $stmt->close();                               // no longer need statement
        echo "<a class=\"btn btn-sm btn-dark\" data-toggle=\"tooltip\" data-placement=\"right\" title=\"{$title}\" href=\"movies-modal.php?moviesid={$row2['id']}&action={$action}\">";
            echo "<i class=\"fa {$icon}\"></i>&nbsp; $text";
        echo "</a>";
    }
}

Если у меня изменилась логика, то я был просто смущен вашими требованиями к вопросу ... Я могу с радостью отредактировать свой ответ, чтобы исправить его, если вы найдете что-то не так.

0 голосов
/ 12 февраля 2019
Expected Output - display Unfavorite link when data exists and
when not Favorite link will display.

Это от вашего вопроса.Но логика вашего кода обратная.Замените весь фрагмент кода следующим:

$data = mysqli_query($con,"SELECT * FROM movies_favorites where moviesId= '$moviesid'");

/* If $data exists */
if ($data) {
  if (mysqli_num_rows($data) > 0) {
    /* Displays Unfavorite if $data is not empty */
    echo '<a class="btn btn-sm btn-dark" data-toggle="tooltip" data-placement="right" title="DeleteFavorites" href="movies-modal.php?moviesid='.$row2['id'].'&&action=deletefavorites">
      <i class="fa fa-heart-o"></i>&nbsp; Unfavorite
    </a>';
  }
  else {
    /* Displays Favorite if $data is empty */
    echo '<a class="btn btn-sm btn-dark" data-toggle="tooltip" data-placement="right" title="Favorites" href="movies-modal.php?moviesid='.$row2['id'].'&&action=moviesfavorites">
      <i class="fa fa-heart"></i>&nbsp; Favorite
    </a>';
  }
}
?>

Сначала проверьте, существует ли ваш $data, возвращаемый вашим mysqli_query, перед выполнением кода if-else.Я немного изменил ваш код и поменял ваши условия.

0 голосов
/ 12 февраля 2019

Сначала вы должны искать данные, возвращаемые запросом.

Код должен выполняться только в том случае, если данные, возвращаемые запросом, не null.

Так что сначала проверьте, если результатне является нулевым, тогда продолжайте только дальше.

Вы можете использовать следующий код:

$data = mysqli_query($con,"SELECT * FROM movies_favorites where moviesId= '$moviesid'");

//check if $data is not null
if (true == $data){
//further processing continue
if(mysqli_num_rows($data) <= 0) {
    echo '<a class="btn btn-sm btn-dark" data-toggle="tooltip" data-placement="right" title="Favorites" href="movies-modal.php?moviesid='.$row2['id'].'&&action=moviesfavorites">
             <i class="fa fa-heart"></i>&nbsp; Favorite
          </a>';
} else {
    echo '<a class="btn btn-sm btn-dark" data-toggle="tooltip" data-placement="right" title="DeleteFavorites" href="movies-modal.php?moviesid='.$row2['id'].'&&action=deletefavorites">
             <i class="fa fa-heart-o"></i>&nbsp; Unfavorite
          </a>';
}
}
?>
0 голосов
/ 12 февраля 2019
$data = mysqli_query($con,"SELECT * FROM movies_favorites where moviesId= '$moviesid'");

Можете ли вы изменить свой код и повторить попытку?

$data = mysqli_query($con,"SELECT * FROM movies_favorites WHERE moviesId= '".$moviesid."'");

или

$data = mysqli_query($con,"SELECT * FROM movies_favorites WHERE moviesId= '{$moviesid}'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...