2009-11-24 51 views
0

我試圖更新數據庫中的條目我已加密該字段uniqueID更新不適用於MySQL和PHP

可能是加密的字段uniqueId導致問題。

$query = "SELECT UniqueID FROM configuration"; 
$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 
echo $num_rows; 
while($row = mysql_fetch_assoc($result)) 
{ 
    $dbuniqueID = Encryption::decrypt($row['UniqueID']); 

    if($dbuniqueID == $UniqueID)  
    { 
    // $UniqueID = Encryption::encrypt($UniqueID); 
     echo $UniqueID; 
     $insert = "UPDATE configuration SET status = 'ready', original_conf_path = '$Filepath' 
     WHERE UniqueID = '$UniqueID'"; 
     mysql_query($insert); 
    } 
} 

回答

0
$insert = "UPDATE configuration SET status = 'ready', SET original_conf_path = '".$Filepath."' WHERE UniqueID = '".$UniqueID."'"; 
0

那麼問題就在這裏:WHERE UniqueID = '$UniqueID'";

原因$ UniqueID的持有解密值這麼UniqueID的數據庫是在變量不同。

但是,如果$的UniqueID存儲有加密值超過這條線將無法正常工作:if($dbuniqueID == $UniqueID

原因你是比較加密和解密值

2

沒有$UniqueID您比較或插入 - 它應該是$row['UniqueID']

$insert = "UPDATE configuration SET status = 'ready', original_conf_path = '$Filepath' 
      WHERE UniqueID = '$row[UniqueID]'"; 

你也應該逃避它:

$insert = "UPDATE configuration SET status = 'ready', 
     original_conf_path = '" . mysql_escape_string($Filepath) . "' 
     WHERE UniqueID = '" . mysql_escape_string($row['UniqueID']) . "'"; 
+0

非常感謝格雷格工程.... – NewBie 2009-11-24 08:44:23

+0

現在我已經在數據庫中添加一列,更新不工作agian – NewBie 2009-11-24 09:57:33

+0

$插入=「更新配置設置狀態=‘準備好’, \t \t original_conf_path =「」。 mysql_escape_string($ Filepath)。 「' \t \t WHERE UniqueID ='」。 mysql_escape_string($ row ['UniqueID'])。 「'」; \t \t \t mysql_query($ insert); – NewBie 2009-11-24 09:58:30