mysql — PHP, если продолжать выполнение, несмотря на логику

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

Я использую этот URL: change-status.php?id=1

Вот распечатка того, что я получаю после бесконечного обновления страницы:

1 (status)
[Yes Accessed] status=1 yes=1
1=rating
1=local id
0 (response) 1 (id)

Я не могу понять, почему, когда я обновляю, это не устанавливает статус 0, Я пошел в MySQL и вручную изменил его на 0 для того, чтобы проверить elseifи это работает. Это просто if часть не работает. Это на самом деле входит в if заявление, но это не меняет БД вообще.

<?phprequire_once 'class/common.php';

$response;

$id = $_GET["id"];

$movies = new Movies();
$movies->get_status($id);

unset($status);
$status = $movies->ready;
$yes = 1;
$no = 0;

echo $status . " (status)<br>";

// Ready Yes, changing to Not Ready and return to AJAX 0
if ($status == $yes) {
$movies->set_status($id, 0);
$response = 0;
echo "[Yes Accessed] status=".$status." yes=".$yes."<br>";
echo $movies->ready."=rating<br>";
echo $id."=local id<br>";
}
// Ready No, changing to Ready and return to AJAX 1
elseif ($status == $no) {
$movies->set_status($id, 1);
$response = 1;
echo "[No Accessed] status=".$status." yes=".$yes."<br>";
}
else {
$response = 404;
}

echo $response . " (response) " . $id . " (id)";?>

Вот мое заявление в БД:

// Set Movie Status
public function set_status($id, $ready) {

$statement = $this->database->prepare("UPDATE Movies SET Ready = ? WHERE ID = ?");
$statement->bindParam(1, $id);
$statement->bindParam(2, $ready);
$statement->execute();

}

Спасибо за любую помощь, которую кто-либо может оказать, я просто не могу понять, почему она не работает. Так должно быть!

0

Решение

Ваши параметры в неправильном порядке в вашем bindParam() звонки. Так должно быть:

$statement->bindParam(1, $ready);
$statement->bindParam(2, $id);

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

$statement = $this->database->prepare("UPDATE Movies SET Ready = :ready WHERE ID = :id");
$statement->bindParam(':id', $id);
$statement->bindParam(':ready', $ready);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]