2013-10-06 43 views
1

我需要一些幫助在小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當然包含兩個值。

回答

1

你可以做的更新與一個單一的查詢:

UPDATE personnel SET Present = 1 - Present WHERE Inlogcode=? 

考慮使用PDO和準備語句。您當前的查詢容易受到SQL注入攻擊

+1

這是一個簡單的美麗。我的最愛。 – user2851974

0

嘗試

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

你可以用一個查詢

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

心中撥動你的布爾的 「」字符串和變量之間。你沒有在你的代碼中正確地做到這一點。

+0

沒有必要爲IF –

+1

沒有IF沒有工作。但這是我嘗試並發現的第一個解決方案。 – user2851974