2010-11-08 42 views
0

所以我遇到了一個令人困惑的(程序員造成的)錯誤,我是程序員。數據庫映像然後更新=錯誤,更新然後圖像=成功!爲什麼?

我創建了一個包含用戶配置文件的網站。用戶配置文件包含許多字段和圖像。圖像上傳得很好。首先它被轉換成適合某個區域。

...
//我將圖像上傳到數據庫。
imageConverter-> loadImage($ _ FILE ... blah balh)。
...

當用戶決定改變他的信息時,他也有機會改變他的照片。編輯配置文件過程完全相同,作爲配置文件啓動過程。唯一的區別是我檢查他/她每次更新一個字段,並更改數據庫中的特定行(顯然這可以做到最佳,但首先我希望它工作:))

迷惑一部分是這個。當我編輯個人資料信息時,訂單就像這樣。 我使用MYSQLI($ this-> mysqli-> query($ query))。

這些在數據庫中編輯,如果他們是CHANGED

  • 1姓名
  • 2姓氏
  • 3密碼
  • 4各種偏好(複選框/單選按鈕)。
  • 5電子郵件
  • 6個人資料圖片。
  • 7更新會話信息並向數據庫查詢最新更新信息。

現在#7返回假(SELECT * FROM USERSINFO)

現在,如果i開關動作的順序。

  • 1姓名
  • 2姓氏
  • 3密碼
  • 4個各種偏好(複選框/單選按鈕)。
  • 5電子郵件
  • 6更新會話信息並向數據庫查詢更新信息。
  • 7個人資料圖片。

它工作得很好。

任何答案?這是否意味着如果有1000人一次嘗試使用我的數據庫,那麼所有的東西都會被破壞?

某些代碼:

插入圖像(步驟#6在不工作示例,#7在工作實施例)
$這 - > mysqli->查詢( 「DELETE FROM」 .DB_REVIEW_IMAGE_TABLE。「WHERE email ='$ email'」);
如果($這個 - > mysqli->查詢( 「INSERT INTO」 .DB_REVIEW_IMAGE_TABLE。 「VALUES( '$電子郵件', '$內容', '$ IMAGETYPE')」))

更新用戶信息分成會話信息。 (步驟#7在不好的例子中,#6在工作示例中)
$ this-> userInfo = $ _SESSION [SESSION_USER_INFO] = $ database-> getUserInfo($ this-> email);

其中$ database-> getUserInfo($ this-> email)==「SELECT」.DB_USERS_ALL_MOUNTAIN。「,」.DB_USERS_BACK_COUNTRY。「,」.DB_USERS_GROOMERS。「,」.DB_USERS_PARK。「,」.DB_USERS_SEASON_DAYS。「, 「.DB_USERS_SEX。」,「.DB_USERS_YEARS。」,「.DB_USERS_FIRST_NAME。」,「.DB_USERS_LAST_NAME。」,「.DB_USERS_CITY。」,「.DB_USERS_STATE。」FROM「.DB_USER_INFO_TABLE.SQL_WHERE_EMELE

我喜歡使用常量: )。和DB_USERS_SEX =男性或女性(以防萬一)

邁克爾

+0

請格式化您的問題以獲得更好的可讀性。使用表格上方的按鈕。 – stillstanding 2010-11-08 06:23:58

+0

這有幫助嗎? – Michael 2010-11-08 06:31:45

+0

我的猜測是數據庫在插入圖片時很忙,所以如果我事先做好聲明,它就可以正常工作。太混亂了! – Michael 2010-11-08 06:33:45

回答

0

好吧,答案很簡單。

我的數據庫類有一個名爲$ mysqli的模塊級var。這個$ mysqli在某種程度上被同時使用。

我做了2次連續通話。

  • updatePic
  • updateSessionInfo

每個使用的數據庫。但是通過模塊化級別var $ mysqli會以某種方式導致衝突。特別是因爲會話信息和圖片信息位於兩個不同的數據庫中。我一定不太瞭解php,但是這些必須在另一個完成之前執行。因此,對數據庫

  • 內打破這個了,每個方法創建到數據庫
  • 的連接設置爲使用數據庫。
  • 執行查詢
  • 關閉連接/結果集。

現在,它的工作原理!

相關問題