Вставить по первому запросу; обновлять все последующие запросы - PullRequest
0 голосов
/ 26 февраля 2012

Я вставляю строку в таблицу базы данных MySQL.При первой вставке я хочу добавить новую строку, но после этого я просто хочу обновить эту строку.Вот как я это делаю.Ajax-запрос вызывает следующий php-файл:

<?php

include "base.php";

$bookID = $_POST['bookID'];
$shelfID = $_POST['shelfID'];
$userID = $_SESSION['user_id'];

$query = mysql_query("SELECT shelfID FROM shelves WHERE userID = '$userID' AND shelfID = '$shelfID' AND bookID = '$bookID'");

if (mysql_num_rows($query) == 0) {
    $insert = "INSERT INTO shelves (bookID,shelfID,userID) VALUES ('$bookID','$shelfID','$userID')";
    mysql_query($insert) or die(mysql_error());
} elseif (mysql_num_rows($query) == 1) { //ie row already exists
    $update = "UPDATE shelves SET shelfID = '$shelfID' WHERE userID = '$userID' AND bookID = '$bookID'";
    mysql_query($update) or die(mysql_error());
}
?>

В существующем состоянии каждый раз добавляет новую строку.

Ответы [ 2 ]

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

Вы можете использовать синтаксис INSERT ... ON DUPLICATE KEY UPDATE.Пока у вас есть уникальный индекс для набора данных (т. Е. Userid + shelfid + bookid), который вы вставляете, он будет обновляться.

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

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

Вы должны рассмотреть возможность использования PDO для доступа к данным.Здесь обсуждается, что вам нужно сделать: Вставка PDO при обновлении дубликата ключа

Я бы пометил это как дубликат, но этот вопрос конкретно касается PDO.

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