php SQL создание строки если уже существует

autocalc
На сайте с 11.05.2011
Offline
52
1345

Функция выполняет запись данных в таблицу, запускается же он часто, вопрос, если в mySQL уже есть такая запись, что происходит во время обращения скрипта к mySQL? Логично ли исполнение функции? Или же стоит сделать проверку существования записи в mySQL и как?

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#1
autocalc
На сайте с 11.05.2011
Offline
52
#2
Алексей Барыкин:
http://phpclub.ru/mysql/doc/replace.html

Все равно ничего не понял, в общем мне надо чтобы в случае существования записи - новая не записывалась, или хотя бы просто обновляла существующую (идентичную).

[Удален]
#3
autocalc:
Все равно ничего не понял, в общем мне надо чтобы в случае существования записи - новая не записывалась, или хотя бы просто обновляла существующую (идентичную).

Ещё раз: http://phpclub.ru/mysql/doc/replace.html

P.S. "Не записывалась" и "просто обновляла" - это два совершенно различных сценария. Если обновлять хотите, то replace в помощь. Если не записывалась, то unique индекс на столбец.

autocalc
На сайте с 11.05.2011
Offline
52
#4
Freon:
Ещё раз: http://phpclub.ru/mysql/doc/replace.html

P.S. "Не записывалась" и "просто обновляла" - это два совершенно различных сценария. Если обновлять хотите, то replace в помощь. Если не записывалась, то unique индекс на столбец.

А в случае если нет, то создавала, то о чем Вы говорите я понял, извините меня если я сразу не правильно выразился.

A
На сайте с 29.12.2007
Offline
68
#5

А зачем replace-то? update наверное, нет?

INSERT INTO table SET field="value" ON DUPLICATE KEY UPDATE field=VALUES(field)

примерно так.

sabotage
На сайте с 14.02.2007
Offline
192
#6

А если не обновлять, но и ошибку не получать:

INSERT IGNORE INTO table SET name='name' WHERE col='col'
autocalc
На сайте с 11.05.2011
Offline
52
#7
sabotage:
А если не обновлять, но и ошибку не получать:

Пошел по русски:

Идет проверка:

$query = "SELECT bla FROM users WHERE bla='".$bla."'";

$res = mysql_query( $query );

if ( mysql_num_rows( $res ) > 0 ) {

$exp = mysql_result( $res, 0, 0 );

}

И если совпадений нет:

if($exp!=$bla) {

...

A
На сайте с 29.12.2007
Offline
68
#8
autocalc:
Пошел по русски:
Идет проверка:
$query = "SELECT bla FROM users WHERE bla='".$bla."'";
$res = mysql_query( $query );
if ( mysql_num_rows( $res ) > 0 ) {
$exp = mysql_result( $res, 0, 0 );
}
И если совпадений нет:
if($exp!=$bla) {
...

Эмм... А может не надо так? =)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий