2014-10-29 45 views
-2

值我有一點與腳本我正在寫一個問題。更新MySQL的布爾(TINYINT)從PHP

$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 

這裏的主要問題是,雖然我已經測試了

  1. 的這部分代碼將運行

  2. 我已經成功地連接到正確的服務器

3)$_SESSION[username]給我正確的用戶名, 運行代碼時數據庫未更新。慢板是一個布爾值(當然,一個tinybit,真的),我已經上傳的數據庫在這裏我的phpMyAdmin的屏幕:

http://imgur.com/HUFdx0p

我不完全知道爲什麼它不工作,儘管我在網上搜索並發現了類似的線程,但在任何爲我工作的線程中都沒有修復。我想知道你們中的一個人是否可以看到我在這裏做錯了什麼?

編輯額外的:

if(($_POST['adagio']) == 1){ 
$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 
} 
+0

; * mysql *,* mysqli *或* PDO *?你可以展示更多關於你如何執行查詢的代碼嗎? – Phil 2014-10-29 23:48:38

+0

@Phil我正在使用mysql 5.1。我用更多的代碼更新了原文。 (它很短,現在就是這樣,除了我的代碼連接到數據庫和session_start)基本上,我得到一個複選框(0或1)的結果,然後,如果它是一個,啓用慢板數據庫。 – nanobots 2014-10-29 23:57:45

+2

請再次閱讀我的問題,**仔細**。你如何執行查詢?將會有一行代碼**執行** $ sql中的查詢。 **顯示該行** – Phil 2014-10-30 00:04:33

回答

2

$_SESSION[username]幾乎可以肯定是一個字符串,因此它必須在引號:

$sql ="UPDATE users SET adagio = 1 WHERE username = '$_SESSION[username]'"; 

僅供參考,MySQL的會很樂意告訴你的SQL錯誤,如果你檢查他們。你應該在你正在使用的任何MySQL庫中使用適當的錯誤報告功能。

+1

爲什麼這個答案得到downvotes? – 2014-10-29 23:41:01

+0

@castis這裏是相關的手冊條目 - http://php.net/manual/language.types.string.php#example-93。查看* koolaid1 *部分 – Phil 2014-10-29 23:42:43

+1

1,因爲*'你的建議'* – Darren 2014-10-29 23:46:37

0

你可以試試這個。

if (1 == $_POST['adagio']) { 
    $sql = sprintf ("UPDATE users SET adagio = 1 WHERE username = '%s'", mysql_escape_string($_SESSION['username'])); 
} 
您正在使用什麼數據庫擴展
+0

小心解釋這是如何解決他們的問題? – 2014-10-30 23:26:04

+0

儘管您似乎擔心SQL語法,但我的觀點是,'$ _POST ['adagio']'沒有得到適當的價值。SQL語法對我來說似乎很好。你可以手動嘗試從SQL命令行或類似phpmyadmin。你正在檢查$ _POST ['adagio']是否有值,然後更新表中的行。我認爲應該是$ _POST ['adagio']是1,然後更新表中的行。 – cupid 2014-10-31 07:56:35