使用从mysql查询接收到的布尔值更新值
我需要一些帮助在小MySQL数据库的字段中切换布尔值。我创建了一个index.php,显示名称和一个存在字段(Present/Away)。为此,我使用布尔值。该值是可点击的,这应该切换布尔值。这里的相关代码:使用从mysql查询接收到的布尔值更新值
$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当然包含两个值。
你可以做的更新与一个单一的查询:
UPDATE personnel SET Present = 1 - Present WHERE Inlogcode=?
考虑使用PDO和准备语句。您当前的查询容易受到SQL注入攻击
尝试
$presence = $result==1?true:false;
你可以用一个查询
'UPDATE personnel SET Present = IF (Present, 0, 1) WHERE Inlogcode="'.$id.'"'
心中拨动你的布尔的 “”字符串和变量之间。你没有在你的代码中正确地做到这一点。
没有必要为IF –
没有IF没有工作。但这是我尝试并发现的第一个解决方案。 – user2851974
这是一个简单的美丽。我的最爱。 – user2851974