我需要一些帮助在小型MySQL数据库中的字段中切换布尔值。我创建了一个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似乎没必要,但我似乎失去了布尔值,因为我总是得到所有零或全部的。测试DB当然包含两个值。
答案 0 :(得分:1)
您可以使用单个查询进行更新:
UPDATE personnel SET Present = 1 - Present WHERE Inlogcode=?
考虑使用PDO和准备好的语句。您当前的查询容易受到SQL注入攻击
答案 1 :(得分:0)
尝试
$presence = $result==1?true:false;
答案 2 :(得分:0)
您可以使用一个查询切换布尔值
'UPDATE personnel SET Present = IF (Present, 0, 1) WHERE Inlogcode="'.$id.'"'
介意“。”字符串和变量之间。您没有在代码中正确执行此操作。