2010-03-28 100 views
0

我的查詢:所有符號後「和」剝離

mysql::getInstance()->update('requests', array('response' => mysql_real_escape_string($_POST['status'])), array('secret' => $_POST['secret'])); ?> 

如果我魔杖與「&」符號,所有符號添加字符串後「&」剝離。 !

舉例: 字符串:「№;%:? ()_ + @#$%^ &()_ +

數據庫

我只看到:!」 №; %:?*()_ +!@#$%^

如何解決這個問題?

更新功能,如果有人需要:

function update($table, $updateList, $whereConditions) 
{ 
    $updateQuery = ''; 
    foreach ($updateList as $key => $newValue) { 
     if (!is_numeric($newValue)) { 
      $newValue = "'" . $newValue . "'"; 
     } 
     if (strlen($updateQuery) == 0) { 
      $updateQuery .= '`' . $key . '` = ' . $newValue; 
     } else { 
      $updateQuery .= ', `' . $key . '` = ' . $newValue; 
     } 
    } 
    return $this->query('UPDATE ' . $table . ' SET ' . $updateQuery . $this->buildWhereClause($whereConditions)); 
} 

UPD: 回聲的MySQL ::的getInstance() - > getLastSQL()說:

UPDATE requests SET `response` = '!\"№;%:?*()_ [email protected]#$%^' WHERE `secret` = '52a4ab5f7f3e8491e60b71db7d775ee2' 

左右,隨着MySQL的功能更新問題類?

Slaks,我需要使用str_replace函數( '&', '%28',$查詢); ?

+1

如果你回顯'$ _POST ['status']',你看到了什麼? – SLaks 2010-03-28 01:39:48

+1

作爲旁註:您的更新例程應確保轉義newValue字符串,而不是調用方。 – hurikhan77 2010-03-28 01:47:41

+0

hurikhan77,請問我可以看看示例代碼嗎? – user300413 2010-03-28 02:02:20

回答

3

您可能會在查詢字符串中傳入原始&字符,這會導致&被PHP解析爲第二個參數。 (在進入變量之前)

您需要將&轉義爲%26

編輯:在將它發送到服務器之前,您需要將其轉義。 (當你發出HTTP請求時)