MYSQL Insert: Как сохранить Query в базе данных только один раз - дубликат ключа не работает! - PullRequest
0 голосов
/ 18 апреля 2010

Я хочу сохранить запрос только один раз в базе данных, это мой код:

   $querystat = mysql_real_escape_string($_GET['q']);
    $datetime = time();
    if( ($querystat != $_SESSION['prev_search']) OR ( ($datetime - $_SESSION['datetime']) > 60) ) {
    $insertquery = "INSERT INTO `query` ( `searchquery` , `datetime`) VALUES ( '$querystat' , '$datetime') ON DUPLICATE KEY UPDATE searchquery='$querystat';";
    mysql_query($insertquery, $db);
    }

может быть что-то с == 0?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2010

Что происходит, ON DUPLICATE KEY UPDATE вы проверяете, был ли дубликат на ключе 1, id. То, что вы пытаетесь получить, это уникальные значения для поля searchquery. Вам нужно будет создать УНИКАЛЬНЫЙ индекс для поля searchquery. Для этого запустите ALTER TABLE query ADD UNIQUE ( searchquery ). Однако то, что делает ON DUPLICATE KEY UPDATE часть вашего запроса, вероятно, не то, что вы хотите. Чтобы указать, что этот запрос был повторен позже, вы, вероятно, захотите сделать ON DUPLICATE KEY UPDATE datetime='$datetime'

Кроме того, вы уверены, что вам нужно поле id вообще?

0 голосов
/ 18 апреля 2010

Является ли поисковый запрос поля УНИКАЛЬНЫМ или PRIMARY_KEY?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...