2015-04-20 39 views
-4

我想進一步自定義我的網站/論壇現有的修改,但不幸的是誰,我問的支持筆者有在此刻有點空餘時間。掙扎組建一個SQL查詢

可有人提醒,我可能會與此查詢會錯誤?

  SELECT date FROM {db_prefix}log_activity 
      WHERE date = 2015-12-25 
      (SELECT COUNT(*) AS total FROM {db_prefix}log_online 
      WHERE ID_MEMBER = $memberID); 

我基本上希望檢查我指定的日期出現在{db_prefix} log_activity如果確實如此,觸發我的行動爲所有成員發現,在{db_prefix} log_online

(更多的代碼,但我覺得上面的部分是什麼導致我的問題..)

我嘗試的全碼:

  if (!in_array('test',$currentBadges)) 
      { 

      $resultgroup = $smcFunc['db_query']('', " 
      SELECT date FROM {db_prefix}log_activity 
      WHERE date = 2015-04-20 
      (SELECT COUNT(*) AS total FROM {db_prefix}log_online 
      WHERE ID_MEMBER = $memberID); 
      "); 
      $totalRow = $smcFunc['db_fetch_assoc']($resultgroup); 

      { 
      $badgeAction = 'test'; 
      if (!in_array($badgeAction,$currentBadges) && $totalRow['total'] >= 1) 
      { 
      $badgeID = GetBadgeIDByAction($badgeAction); 
      $ret = AddBadgeToMember($memberID,$badgeID,false); 
      if ($ret == true) 
      { 
      $currentBadges[] = $badgeAction; 
      $newBadges[] = $badgeAction; 
      } 

      } 


      } 
      //end badge code 
      } 

我之前,所以希望這種形式從來沒有使用過這個網站在一定程度上的可讀性...:P

基本上,我試圖做的是: IF(日期)=今日 AND(成員)在 THEN獎徽章已經登錄......

改變的嘗試登錄:

  "WHERE date = 2015-04-20" 
      WHERE date = "2015-04-20" 
+0

如果你不明白你最好對查詢閱讀 – Careen

+3

此一兩件事,需要加引號'其中date = 2015-12-25'否則MySQL的數字你想要做的數學運算,如。減去反過來噴涌而出語法錯誤;你沒有檢查的東西。 –

+0

我們一定會在這裏幫助你,但我建議不要讓人們爲你做 - 這是一個確保你的問題關閉的方法。我編輯了這個。 – halfer

回答

1

根據您的編輯使用"WHERE date = 2015-04-20"

您使用的是雙引號的查詢中雙引號。

使用單引號這樣並按照你在你最初發布的代碼是什麼:

$resultgroup = $smcFunc['db_query']('', " 
      SELECT date FROM {db_prefix}log_activity 
      WHERE date = '2015-04-20' 
      (SELECT COUNT(*) AS total FROM {db_prefix}log_online 
      WHERE ID_MEMBER = $memberID); 
      "); 

另外,如果$memberID不是整數,就還需要加引號。

即:

$resultgroup = $smcFunc['db_query']('', " 
      SELECT date FROM {db_prefix}log_activity 
      WHERE date = '2015-04-20' 
      (SELECT COUNT(*) AS total FROM {db_prefix}log_online 
      WHERE ID_MEMBER = '$memberID'); 
      "); 
  • 但我有點懷疑。不過,我需要指出這一點以防萬一。

有關的更多信息,請閱讀MySQL.com網站上堆棧

和字符串函數如下:

+0

啊,我現在可以看到雙引號/單引號出錯了。 謝謝你! :P 不幸的是我的新代碼產生「黑客行爲......」但我想這是SMF涉及知道爲什麼現在發生了什麼? –

+0

@FourtwentyConnect現在工作嗎? –

+0

調整意見 –