2011-04-20 86 views
0

我沒有收到任何錯誤,我所有的打印聲明都告訴我我做得很好,但是我所期望欄下的字段保持不變。更新聲明對我的表沒有任何影響

發生了什麼(或者不發生)?

if ($current && $new) {// the validation code is left out 


     $sqlTekst = "UPDATE gebruikers SET pasW = ". $_POST[nieuwPasw] ." WHERE gebruikersNr = ". $_POST[gebruikersNr]; 
     print 'huidig POST gebruikersNr = $_POST[gebruikersNr]'; 

// server koppeling 
     $db = mysql_connect("localhost", "internet", "geheim"); 
// database koppeling 
     mysql_select_db("site_met_aanmelden", $db) 
       or die("Kan database gebruikers niet openen".mysql_error());   
     $resultaat = mysql_query($sqlTekst, $db); 
     } 
+0

您如何驗證您正在運行腳本並且數據正在更新? – KTF 2011-04-20 14:16:06

回答

0

我想至少你的$_POST['nieuwPasw']$_POST['gebruikersNr']的是字符串,你不要在您的查詢與「括起來。

你工作的查詢是

$sqlTekst = "UPDATE gebruikers SET pasW = '". $_POST['nieuwPasw'] ."' WHERE gebruikersNr = '". $_POST['gebruikersNr']."'"; 

只需更換一個字符串。

如果使用mysql_error函數在查詢中出現錯誤,您還可以獲取信息。

添加

if (!$resultaat) { 
echo mysql_error(); 
} 

查詢過程中發生,這將打印錯誤。

我也建議將數組鍵添加到apostrophs(雙或單數 - 並不重要)。

+0

是的,但事情是我沒有得到任何錯誤。 而對於'我已經完成了這兩種情況,我的桌子沒有更新 – Immers 2011-04-20 14:19:24

+1

你怎麼知道?你有沒有嘗試調用'mysql_error'? – Nemoden 2011-04-20 14:20:29

+0

唉好吧,爲什麼沒有想到,mysql錯誤可能是如此廣泛適用。非常有意義。有趣的是:錯誤表示「在第1行附近出現了問題」。我發佈的代碼從第28行開始...... – Immers 2011-04-20 14:40:32

1

你提交了數據庫更改嗎?

+0

我所做的只是在phpMyadmin中查詢我的表格。我不確定'commit' – Immers 2011-04-20 14:20:47

+0

是什麼意思,看起來他沒有將autocommit設置爲false。 – 2011-04-20 14:20:57

+2

如果使用InnoDB引擎創建表,默認情況下,MySQL會自動提交一個查詢。我不知道任何改變這種行爲的人。 – Nemoden 2011-04-20 14:23:19

0

如下我會解決它:

$sqlTekst = "UPDATE gebruikers SET pasW = '". $_POST["nieuwPasw"] ."' WHERE gebruikersNr = ". $_POST["gebruikersNr"]; 

假設你Nr是指不需要在選擇報價數量。

1

附加錯誤處理的實際查詢執行
照顧可能的SQL注入
檢查受影響的行,看看是否您的WHERE條件的作品或不
格式和縮進您的sql語句,你會得到一個稍微更有意義的錯誤消息
打印你的SQL語句,所以你可以檢查,而不是$陣列[字符串]

if ($current && $new) { // the validation code is left out 
    $db = mysql_connect("localhost", "internet", "geheim") or die("connect failed. ".mysql_error()); 
    mysql_select_db("site_met_aanmelden", $db) or die("Kan database gebruikers niet openen".mysql_error()); 

    $sql_pasW = mysql_real_escape_string($_POST['nieuwPasw'], $db); 
    $sql_gebruikersNr = mysql_real_escape_string($_POST['gebruikersNr'], $db); 

    $sqlTekst = sprintf(" 
    UPDATE 
     gebruikers 
    SET 
     pasW='%s' 
    WHERE 
     gebruikersNr ='%s' 
    ", $sql_pasW, $sql_gebruikersNr 
); 
    echo 'Debug '.__FILE__.__LINE__.': ', $sqlTekst, "\n"; 
    $resultaat = mysql_query($sqlTekst, $db) or die('query failed: '.mysql_error()); 

    echo 'affected rows: ', mysql_affected_rows($db); 
} 
+0

這看起來很緊密和有用的東西。今天要去檢查這件事還沒有過。乾杯! – Immers 2011-04-21 14:31:45

0

嘗試它像所有的參數 使用$陣列[「字符串」]:

$sqlTekst = "UPDATE gebruikers SET pasW = '". $_POST[nieuwPasw] ."' WHERE gebruikersNr = '". $_POST[gebruikersNr]."'"; 
相關問題