使用从mysql查询接收的布尔值来更新值

时间:2013-10-06 15:10:14

标签: php mysql

我需要一些帮助在小型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当然包含两个值。

3 个答案:

答案 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.'"'

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