Обновить счет от игрока с MySQL - PullRequest
3 голосов
/ 23 февраля 2012

У меня есть простая онлайновая система рекордов для моей игры на iphone с базой данных mysql, которая имеет ранг поля, имя, счет и udid (уникальный идентификатор устройства).Я не хочу получать несколько баллов от udid, и мой вопрос: как я могу убедиться, что старый счет удален, а новый вставлен с новым рекордом.

Мой код длявставка партитуры:

// Insert the score

$retval = mysql_query("INSERT INTO $table(
        udid,
        name,
        score

    ) VALUES (
        '$udid',
        '$name',
        '$score'

    )",$conn);

if($retval) {
    echo "Inserted score $score for $name";
   }

Поэтому я хочу перезаписать старую партитуру и вставить новую.

Спасибо за вашу помощь,

Приветствия, Джо

РЕДАКТИРОВАТЬ:

Я не программист PHP, поэтому, если вы хотите, пожалуйста, приведите простой пример, спасибо заранее!

Ответы [ 5 ]

4 голосов
/ 23 февраля 2012

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

Я рекомендую использовать INSERT ... ON DUPLICATE KEY вместо:

INSERT INTO tablename (udid, name, score)
  VALUES (12, 'Marcus', 100)
  ON DUPLICATE KEY UPDATE score = 100 WHERE udid = 12

Убедитесь, что на udid есть первичный или уникальный ключ, чтобы это работало.

1 голос
/ 23 февраля 2012

Я думаю, что вы хотите обновить, когда он существует или иным образом вставить. Есть способ сделать это, встроенный INSERT ... ON DUPLICATE KEY UPDATE , который работал для меня в той же ситуации в прошлом.

1 голос
/ 23 февраля 2012

Взгляните на ключевое слово REPLACE в mysql: документация .

REPLACE работает точно так же, как INSERT, за исключением того, что если старая строка в таблица имеет то же значение, что и новая строка для PRIMARY KEY или UNIQUE индекс, старая строка удаляется перед вставкой новой строки.

0 голосов
/ 23 февраля 2012

вам нужно использовать оператор update для перезаписи значения в базе данных.

update table set field=value where id=$theudid
0 голосов
/ 23 февраля 2012

То, что вы хотите, это REPLACE INTO.

Подробнее здесь .

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