PHP如果继续执行,尽管逻辑

时间:2014-10-04 01:16:06

标签: php mysql if-statement get

我现在已经敲了几个小时试图解决这个问题。我有一个GET变量,它基本上进入我的数据库并将ready字段从1切换到0或0到1,具体取决于它当前的状态。

我使用此网址: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语句,但它根本不会更改数据库。

<?php


require_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)";


?>

这是我的db语句:

// 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();

}

感谢任何人提供的任何帮助,我只是无法弄清楚它为什么不起作用。它应该是!

1 个答案:

答案 0 :(得分:1)

您的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);