1

我需要一些帮助来切换小型 MySQL DB 中字段中的布尔值。我创建了一个 index.php,它显示了名称和一个存在字段(Present/Away)。为此,我使用布尔值。该值是可点击的,这应该切换布尔值。这里是相关代码:

$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 似乎没有必要,但我似乎失去了布尔值,因为我总是得到全零或全一。测试数据库当然包含这两个值。

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 回答
0

你可以用一个查询来切换你的布尔值

'UPDATE personnel SET Present = IF (Present, 0, 1) WHERE Inlogcode="'.$id.'"'

注意“。” 字符串和变量之间。您在代码中没有正确执行此操作。

于 2013-10-06T17:32:09.957 回答