PHP如果继续执行,不管逻辑如何

PHP如果继续执行,不管逻辑如何,php,mysql,if-statement,get,Php,Mysql,If Statement,Get,我花了好几个小时才弄明白。我有一个GET变量,它基本上进入我的数据库,并根据当前的情况将ready字段从1切换到0或从0切换到1 我使用这个url:change status.php?id=1 以下是无限页面刷新后得到的打印输出: 1(地位) [是访问]状态=1是=1 1=额定值 1=本地id 0(响应)1(id) 我不明白为什么刷新时没有将状态设置为0。我进入mySQL并手动将其更改为0,以便测试elseif,它可以正常工作。如果部分不起作用,那就是。它实际上输入了if语句,但它根本不会更改

我花了好几个小时才弄明白。我有一个GET变量,它基本上进入我的数据库,并根据当前的情况将
ready
字段从1切换到0或从0切换到1

我使用这个url:
change status.php?id=1

以下是无限页面刷新后得到的打印输出:

1(地位)
[是访问]状态=1是=1
1=额定值
1=本地id
0(响应)1(id)

我不明白为什么刷新时没有将状态设置为
0
。我进入mySQL并手动将其更改为
0
,以便测试
elseif
,它可以正常工作。如果部分不起作用,那就是
。它实际上输入了
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)";


?>

谢谢任何人能提供的帮助,我只是不明白为什么它不起作用。应该是

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

我认为这都与数据类型有关。如果要获取
$yes
$no
的int值,只需使用
intval()
函数来获取['id']
。试试看。@HendryTanaka我不这么认为。PHP和MYSQL都会自动转换类型。令人费解的是,
elseif
语句的工作方式是假设的。
if
语句除了不同的变量外几乎相同,它甚至可以按应该的方式访问,但它不会改变数据库中的任何内容。只需启用错误报告
error\u reporting(E\u ALL);ini设置(“显示错误”,1)在脚本顶部。任何错误输出?该输出似乎表明
if
工作正常。为什么你认为它不起作用?看起来问题是数据库没有更新。哦,天哪,太感谢你了!我不敢相信我看得太多了。我把它们调高了,砰的一声,它开始工作了。再次感谢!
$statement = $this->database->prepare("UPDATE Movies SET Ready = :ready WHERE ID = :id");
$statement->bindParam(':id', $id);
$statement->bindParam(':ready', $ready);