Функция php для вставки или обновления таблицы MySQL на true / false - PullRequest
0 голосов
/ 30 октября 2009

Я пытаюсь написать функцию, чтобы проверить, существует ли пользователь в таблице, если да, обновите строку, если нет, вставьте ее.

Вот моя функция:

        function UserExists($screenname){
            $mysql = mysql_fetch_array ( mysql_query("SELECT * FROM `users` WHERE `screenname` = '$screenname' "));
                if($mysql){
                    return TRUE;
                }else{
                    return FALSE;
                }
}

И я выполняю эту функцию, используя следующее:

if(UserExists($user)){
mysql_query("UPDATE `users` SET  `token` =  '$token' ,  `secret` =  '$secret'  WHERE `screenname` = '$user' ");
}else{
mysql_query("INSERT INTO `users` (`screenname`, `token`, `secret`) VALUES ('$user', '$token', '$secret')");
}

Он ничего не делает, не выдает никаких ошибок, но и не обновляет таблицу.

Ответы [ 4 ]

3 голосов
/ 30 октября 2009

Вы хотели бы взглянуть на INSERT ... ON DUPLICATE KEY UPDATE ... MySQL синтаксис запроса , чтобы эта работа работала только с одним запросом.

INSERT INTO users (screenname, token, secret) VALUES ('screenname', 'token', 'secret')
ON DUPLICATE KEY UPDATE token = 'token', secret = 'secret'

screenname должен быть уникальным (или первичным ключом), которого у вас, вероятно, нет на данный момент. Я предлагаю добавить столбец идентификатора в таблицу базы данных и использовать его для ссылки на строки базы данных.

0 голосов
/ 30 октября 2009

Я бы просто предложил использовать REPLACE INTO SET col = val в этом случае, все, что вам нужно сделать, это определить уникальный индекс в таблице.

Команда Replace рассмотрит уникальные индексы, если строка уже существует, она обновит существующую, если нет, то вставит новую.

0 голосов
/ 30 октября 2009

Ваше лучшее решение - ДВОЙНОЙ КЛЮЧ, как сказал JoostK

0 голосов
/ 30 октября 2009

Позвоните mysql_error после звонков, чтобы увидеть, какую ошибку вы получаете. Еще одна хорошая техника отладки - запускать ее на сервере с помощью клиента MySQL, такого как mysqlfront или phpMyAdmin.

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