2017-02-13 107 views
-1

我正在嘗試編寫一個用戶系統。我編寫幾乎所有的系統,除了激活。我可以選擇並將數據插入到我的表中,但現在Iam嘗試激活帳戶並卡住了。爲什麼這個UPDATE查詢不會更新我的表?

<?PHP 
include "db_settings.php"; 
$stmt = $dbcon->prepare("UPDATE 'Kullanicilar' SET 'Aktivasyon' = ? WHERE 'KullaniciID'=?"); 
// execute the query 
$stmt->execute(array('1','5')); 

// echo a message to say the UPDATE succeeded 
echo $stmt->rowCount() . " records UPDATED successfully"; 
?> 

而且我得到錯誤爲:

「0條記錄更新成功」。

這是我的表; http://i.imgur.com/PL2eD80.png

enter image description here

我已經改變了我的「Aktivasyon」型intchar嘗試,但它也不起作用。


編輯: 我想使這個功能;

 
function dataUpdate($tableName, $updateRow, $updateValue, $conditonRow, $conditionValue) 
{ 
     include "db_settings.php"; 
     $q = $dbcon->prepare("UPDATE $tableName SET $updateRow= ? WHERE $conditonRow= ?"); 
     $q->execute(array($updateValue,$conditionValue)); 
} 

我也試試這個:

 
      ... 
     $q = $dbcon->prepare("UPDATE `$tableName` SET `$updateRow`= ? WHERE `$conditonRow`= ?"); 
     ... 

我怎樣才能使此功能工作?

+0

檢查你的分貝記錄是否更新或實際上? '$ stmt-> execute(array(1,5));'和文件應該是'int(小整數,中整型或整型)' –

+0

@查詢單引號引起的@Ahmet問題。 – Gulshan

+0

謝謝,我明白了! –

回答

0

您正在使用錯誤的引號。你基本上是說「更新這張表,將字符串設置爲當字符串KullaniciID等於字符串」這當然不是真的。

如果你想指定列名,你應該使用反引號。然後您的查詢將工作。通常你甚至不需要這些,但由於某種原因,MySQL世界總是添加它們。

爲了澄清,這是一個字符串:'KullaniciID',這是一個列名:`KullaniciID`

此外,你不應該發送整數作爲字符串。它導致額外的轉換,甚至更嚴格的數據庫的錯誤。

+0

感謝我得到它,但我試圖使這個功能,我再次卡住。你可以看看我的編輯? –

0

語法有錯誤,表和列名不能使用單引號,修改SQL:

UPDATE `Kullanicilar` SET `Aktivasyon` = ? WHERE `KullaniciID` = ? 
    ^  ^ ^  ^  ^  ^
// Replace ' --> ` 
+0

感謝我得到它,但我試圖使這個功能,我再次卡住。你可以看看我的編輯? –

相關問題