2013-04-26 6 views
0

我在做節目與MySQL和PHP面臨的一個問題... 看,我想我的搜索查詢保存到數據庫中,, 參見該例子中PHP/MySQL的插入上重複鍵更新,如果CURDATE()的比賽,否則使新條目

搜索#1 => 20次日期=> 2013年4月26日

#1找遍=>上日期10次=> 2013年4月27日

搜索#1 => 50 times on date => 2013-04-28

格式不matter..Actually我要救我的搜索查詢,如果更改日期.. 如果日期得到相匹配,以便應更新時間+ 1

看到這個代碼,,

<?php 

$keyword = null; 
$date = null; 

if (!empty($_GET['s'])) { 


$keyword = stripslashes($_GET['s']); 

$date = date("Y-m-d"); 

try { 

    $objDb = new PDO('mysql:dbname=search;charset=UTF-8', 'root', ''); 

      $check = "SELECT * 
      FROM `search1` 
      WHERE `keyword` = '$keyword%' 
      AND `date` = CURDATE() "; 

      if (!empty($check)) 
      { 
      $sql ="UPDATE `search1` 
      SET `times` = `times` + 1 
      WHERE `keyword` = '$keyword%' 
      AND `date` = CURDATE()"; 
      } 
      else 
      { 
      $sql = "INSERT INTO `search1` (`keyword`, `date`) VALUES (:keyword, :date)"; 
      $statement = $objDb->prepare($sql); 
      $statement->execute(array(':keyword' => $keyword, ':date' => $date)); 

      } 

} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 


} 
?> 

它不工作..有些事情是錯誤的..有人可以告訴我什麼是錯的。 我無法使用主鍵。

+0

你什麼錯誤?從我看到'UPDATE'部分永遠不會去數據庫。另外,如果需要使用相等運算符進行比較,則需要將'keyword'與'LIKE'進行比較,或者去除「%」。 – a1ex07 2013-04-26 16:46:18

+0

實際上它不會保存數據庫中的數據如果我嘗試在代碼中使用@ a1ex07 WHERE關鍵字='$關鍵字%'行如果我使用正常值WHERE'關鍵字='印度'所以它只是找到關鍵字印度在數據庫中,只是更新時間值+ 1 ..添加此代碼後,如果(!空($檢查))這個程序還有一件事是不保存數據庫中的新條目... – Kapil 2013-04-26 17:18:42

+0

'WHERE keyword ='India %''正在尋找字符串「印度%」。 'WHERE關鍵字LIKE'印度%''正在尋找以「印度」開頭的字符串... – a1ex07 2013-04-26 17:25:29

回答

3

可以設置在球場上的日期和關鍵字的唯一指標

ALTER TABLE `search1` ADD UNIQUE (
`keyword` , 
`date` 
); 

編輯:看起來像OP已經得到它了,但只是爲了完整性,上述查詢你只運行一次增添獨一無二指向表的索引 - 請注意,如果您的行具有相同的關鍵字和日期值,則它將不起作用;如果你得到一個'重複值'的錯誤,你將不得不刪除行,直到這些值是唯一的,然後重試。

那麼查詢

INSERT INTO `search1` (`keyword`, `date`, `times`) VALUES (:keyword, :date, 1) ON DUPLICATE KEY UPDATE `times` = `times` + 1 

應該做的伎倆:)

+0

您好放置此代碼的位置ALTER TABLE'search1' ADD UNIQUE( 'keyword', 'date' );請你給我演示一下我的代碼示例... – Kapil 2013-04-26 17:20:05

+0

你的建議是正確的..我知道了 – Kapil 2013-04-26 17:50:06

+0

很高興你有它排序,對不起,我不是。無論如何增加了更多的細節,快樂編碼:) – CodeMonkey 2013-04-26 19:36:36

相關問題