使用从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注入攻击

+1

这是一个简单的美丽。我的最爱。 – user2851974

尝试

$presence = $result==1?true:false; 

你可以用一个查询

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

心中拨动你的布尔的 “”字符串和变量之间。你没有在你的代码中正确地做到这一点。

+0

没有必要为IF –

+1

没有IF没有工作。但这是我尝试并发现的第一个解决方案。 – user2851974