0

PHP と AJAX を使用してデータベースのフィールドを更新しようとしています

テストしたところ、正しいデータが送信されていることがわかりましたが、更新を処理している PHP が正しく機能していません。

else条件付きで応答を取得するだけです。

ユーザー入力に応じてDBを更新する必要があります。

私が言ったように、応答に対して得られるのはelse応答だけです。

$youruname = $_POST['youruname'];
$selectedplayer = $_POST['selectedplayer'];
$selPlayerUname = $_POST['selPlayerUname'];

$flag = "";
$itStatus = "";

$checkit = mysqli_query($conn,"SELECT it FROM login WHERE uname='$selPlayerUname'");

while($row = mysqli_fetch_array($checkit))
{
    $itStatus = $row["it"];
}

if($itStatus == "not it")
{
    mysqli_query("UPDATE login SET it = CASE WHEN uname = '$youruname' THEN 'not it' ELSE 'it' END WHERE uname IN ('$youruname', '$selPlayerUname')");

    $flag = "success";
}
else if($itStatus == "it")
{
    $flag = "nope";
}
else
{
    $flag = "error";
}
echo json_encode(array("message" => $flag, "tagged" => $selectedplayer));

mysqli_free_result($checkit);
mysqli_close($conn);
4

2 に答える 2

1

ここで紛らわしいことがあります。ループとループ後の条件があります。更新クエリを次のようなループ内に置くべきではありません。

while($row = mysqli_fetch_array($checkit))
{
    $itStatus = $row["it"];


    if($itStatus == "not it")
    {
       mysqli_query("UPDATE login SET it = CASE WHEN uname = '$youruname' THEN 'not  it' ELSE 'it' END WHERE uname IN ('$youruname', '$selPlayerUname')");

       $flag = "success";
    }
    else if($itStatus == "it")
    {
       $flag = "nope";
    }
    else
    {
       $flag = "error";
    }
}

$iStatusは、ループ内にあるため、データベースから最後の値を取得し、条件をチェックインします

上記の方法で問題が解決しない場合は、$ _POST 値をチェックして、それらのいずれかが空白またはnullであるかどうかを確認し、 PHPMyAdminでクエリを実行して、実際に何かが返されるかどうかを確認します。

于 2013-06-04T14:48:09.083 に答える