Ну ты хоть понимаешь, что это – полный бред?Мне нужно узнать следующий id который еще не вставляли, который вставят через год.
# Проверяем наличие ранее оформленного заказа данным покупателем
$add_zakaz_select = mysql_query("SELECT * FROM zakaz_test WHERE sid = '$sid' ");
$row = mysql_fetch_assoc($add_zakaz_select);
# Если заказа не было - добавляем
if ( $row == null ) {
$add_zakaz_select = mysql_query("SELECT * FROM cart WHERE sid = '$sid' ");
while($row = mysql_fetch_assoc($add_zakaz_select)) {
$insert = mysql_query("INSERT INTO zakaz_test (id, product_id, name, model, img, qty, price, color, sid, date, total, user_id)
VALUES ('$last_id', '$row[id]', '$row[name]', '$row[model]', '$row[img]', '$row[qty]', '$row[price]', '$row[color]', '$row[sid]', '$row[date]', '$row[total]', '$last_user_id') ");
}
}
else {
$add_zakaz_select = mysql_query("SELECT * FROM cart WHERE sid = '$sid' ");
while($row = mysql_fetch_assoc($add_zakaz_select)) {
# При обновлении все товары меняются на один и тот же.
$result = mysql_query("UPDATE `zakaz_test` SET product_id = '$row[id]', name = '$row[name]', model = '$row[model]', img = '$row[img]', qty = '$row[img]', price = '$row[price]', color = '$row[color]', total = '$total', user_id = '$last_user_id' WHERE sid = '". session_id() ."' ");
}
}
# Работает следующая конструкция, но проблема с id, т.к. он при каждом обновлении меняется на id+1
#Удаляем ранее оформленный заказ
$delete = mysql_query("DELETE FROM zakaz_test WHERE sid = '$sid' ");
# Записываем заново исправленный
$add_zakaz_select = mysql_query("SELECT * FROM cart WHERE sid = '$sid' ");
while($row = mysql_fetch_assoc($add_zakaz_select)) {
$insert = mysql_query("INSERT INTO zakaz_test (id, product_id, name, model, img, qty, price, color, sid, date, total, user_id)
VALUES ('$last_id', '$row[id]', '$row[name]', '$row[model]', '$row[img]', '$row[qty]', '$row[price]', '$row[color]', '$row[sid]', '$row[date]', '$row[total]', '$last_user_id') ");
Всё на то указывает. Человек просто не представляет себе, что такое race condition, и как его избежать, или хотя бы минимизировать возможность появления.мне кажется там тяжелый случай
Человек просто не представляет себе, что такое race condition
человек не понимает или не знает, как работает auto_incrementlast_insert_id мне не подходит
$add = mysql_query("INSERT INTO user (user_firstname, user_lastname, user_middlename, phone, mail, city, msg, sid) VALUES ('$_POST[user_firstname]', '$_POST[user_lastname]', '$_POST[user_middlename]', '$_POST[phone]', '$_POST[mail]', '$_POST[city]', '$_POST[msg]', '$sid' ) ");
$user_id = mysql_insert_id();
# Записываем данные покупателя
$res = mysql_query(" SELECT * FROM user WHERE sid = '$sid' ");
$row = mysql_fetch_assoc($res);
# Если такого нет - записываем
if ($row == null ) {
$add_user = mysql_query("INSERT INTO `user` (id, lastname, firstname, middlename, phone, email, city, msg, sid, date) VALUES ('', '$_POST[lastname]', '$_POST[firstname]', '$_POST[middlename]', '$_POST[phone]', '$_POST[email]', '$_POST[city]', '$_POST[msg]', '$sid', '$date' ) ");
}
# Если есть - обновляем
else {
$upd_user = mysql_query("UPDATE `user` SET lastname = '$_POST[lastname]', firstname = '$_POST[firstname]', middlename = '$_POST[middlename]', phone = '$_POST[phone]', email = '$_POST[email]', city = '$_POST[city]', msg = '$_POST[msg]', date = '$date' WHERE sid = '$row[sid]' ");
}
# Номер договора, т.е. номер ранее записанного user`а
$res = mysql_query(" SELECT * FROM user WHERE sid = '$sid' ");
$row = mysql_fetch_assoc($res);
$OrderId = $row['id'];
# Проверяем наличие ранее оформленного заказа данным покупателем
$add_zakaz_select = mysql_query("SELECT * FROM zakaz_new WHERE sid = '$sid' ");
$row = mysql_fetch_assoc($add_zakaz_select);
# Если заказа не было - добавляем
if ( $row == null ) {
$insert = mysql_query("INSERT INTO zakaz_new (id, product_id, name, model, url, img, qty, price, color, sid, date, total, user_id)
SELECT '', id, name, model, url, img, qty, price, color, sid, date, total, '" .$OrderId ."' FROM cart WHERE sid = '$sid' ");
}
else {
# Удаляем ранее оформленный заказ
$delete = mysql_query("DELETE FROM zakaz_new WHERE sid = '$sid' ");
$insert = mysql_query("INSERT INTO zakaz_new (id, product_id, name, model, url, img, qty, price, color, sid, date, total, user_id)
SELECT '', id, name, model, url, img, qty, price, color, sid, date, total, '". $OrderId ."' FROM cart WHERE sid = '$sid' ");
}
require_once "safemysql.class.php";
$db = new SafeMySQL();
$firstname = $db->safesql( strip_tags($_POST['firstname']) );