1

小さな MySQL DB のフィールドのブール値を切り替えるのに助けが必要です。名前とプレゼンス フィールド (Present/Away) を表示する index.php を作成しました。そのためにブール値を使用します。値はクリック可能で、ブール値を切り替える必要があります。関連するコードは次のとおりです。

$id=$_GET['id'];

$qresult = mysqli_query($con,"SELECT Present FROM personnel WHERE Inlogcode='$id'");

$result=mysql_fetch_array($qresult);
$presence = (bool)$result;

echo "ID is: " .$id . "<BR>";
echo "Boolean res is: " . $presence . "<BR>";

if ($presence)
{
    $sql="UPDATE personnel SET Present=True WHERE Inlogcode='$id'";
    $resultaat=mysql_query($sql);
}
    else
{
    $sql="UPDATE personnel SET Present=False WHERE Inlogcode='$id'";
    $resultaat=mysql_query($sql);
}

クエリの結果を、PHP スクリプトの残りの部分で使用できる真のブール値に変換する方法がわかりません。mysql_fetch_array を追加する必要はないようですが、常にすべてゼロまたはすべて 1 を取得するため、ブール値が失われるようです。もちろん、テスト DB には両方の値が含まれています。

4

3 に答える 3

1

単一のクエリで更新を実行できます。

UPDATE personnel SET Present = 1 - Present WHERE Inlogcode=?

PDO と準備済みステートメントの使用を検討してください。現在のクエリは SQL インジェクション攻撃に対して脆弱です

于 2013-10-06T17:43:52.963 に答える
0

試す

$presence = $result==1?true:false;
于 2013-10-06T17:24:23.687 に答える