2011-05-05 53 views
0

我通過1和1使用專用服務器,下面的PHP代碼不會將數據插入數據庫。爲什麼我的數據庫表在此查詢後未更新?

與數據庫的所有連接都是正確的。

$id = $_REQUEST['id']; 
$content = $_REQUEST['content'];  
mysql_query("UPDATE `content` SET `content` = '$content' WHERE `id`='$id'"); 

當我在我的本地服務器上測試一切正常,有一些關於服務器,不會允許我上傳。我使用的是非常普遍的方法

$connection = mysql_connect("localhost", 
    "root", 
    "password"); 

mysql_select_db("dbname", $connection); 
+1

任何錯誤信息? – 2011-05-05 12:19:31

+0

所以......這個問題應該是關於上傳你的PHP代碼,或關於你的數據庫? – 2011-05-05 12:20:03

+0

這不是用於插入任何數據,而是用於更新。 – Revenant 2011-05-05 12:20:59

回答

0

Ddebugging初學者連接...

您還沒有發佈任何錯誤,則錯誤報告關閉?開啓錯誤報告後,調試更容易。

error_reporting(E_ALL); 

我們還想看看我們試圖在數據庫中運行的實際查詢。也許這些變量沒有被正確轉義(包含非法字符)。

$query = "UPDATE table SET name='$name' where id='$id'"; 
echo $query; 
mysql_query($query); 

我的猜測是你必須要mysql_real_escape_string();這兩個變量。 同樣,您通過$id作爲string,它可能是integer

1

1)把這個在你的PHP腳本的頂部錯誤報告開啓:

error_reporting(E_ALL); 

2)運行你的腳本。任何錯誤?如果是,請根據您收到的錯誤消息繼續。 3)仔細檢查你的變量是否被實際定義(你從請求中獲得它們,你不能確定請求實際上包含你正在嘗試使用的值)。

4)您的SQL查詢是非常危險的。使用mysql_real_escape_string()或準備好的語句。不要在整數值周圍加引號。

5)編輯你的腳本看起來更像是這樣的:

error_reporting(E_ALL); 

$id = (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) ? $_REQUEST['id'] : NULL; 
$content = (isset($_REQUEST['content']) && !empty($_REQUEST['content'])) ? $_REQUEST['content'] : NULL;  

try{ 

    if(NULL === $id){ 
     throw new Exception('$id is NULL'); 
    } 
    if(NULL === $content){ 
     throw new Exception('$content is NULL'); 
    } 
    $id = mysql_real_escape_string($id); 
    $content = mysql_real_escape_string($content); 
    $sql = "UPDATE content SET content = '$content' WHERE id = $id"; 

    // connect to database 
    // ... 
    mysql_query($sql); 

}catch(Exception $e){ 
    echo '<p style="color: red;">',$e->getMessage(),'</p>'; 
} 
相關問題