я сделка:MySQL транзакции - Элементы вставляются в обратном порядке
$dbh->beginTransaction();
$i = 0;
while ($i < $total_items_num) {
$insert_data->execute(
array($item_data[ $i ],
$category,
$price,
)
);
$i++;
}
$dbh->commit();
На моей локальной машине, элементы вставляются в надлежащем порядке, например, с 1 по 7-й. Но на сервере производства он вставлен в обратном порядке, например. с 7 по 1-е.
Какая возможная причина для этого, некоторые настройки, которые мне необходимо изменить?
EDIT: Вот запрос:
$insert_data = $dbh->prepare ("
INSERT INTO goods (
item_id,
item_data,
category,
price
)
VALUES (NULL, ?, ?, ?);
");
и порядок вещей должен был быть от 0 до независимо от количества. Например. 0-6, 0-15 ...
Так что я хочу (и то, что работает для меня локально), заключается в том, что item_id (который является первичным ключом) применяется к элементам в этом самом порядке, например. если у 1-го предмета был item_id 1025, то второй должен иметь 1026.
Но что происходит, они вставлены в обратном порядке.
Спасибо за предложения и извините, если вопрос был неопределенным, надеюсь, теперь лучше.
Вы не сказали, что такое заказ и как он определяется в вашем случае. И не показали ** никакого ** запроса в вопросе. Буквально - я не вижу ничего **, связанного с mysql вообще – zerkms
Я не знаю, почему это так, но в конечном итоге это не имеет значения. Порядок строк в MySQL (как и в большинстве RDBMS) не гарантируется. Если вы хотите получить данные в определенном порядке, вы должны использовать предложение ORDER BY в своем запросе, используя определенный вами столбец (например, 'created_at' или' position'). Дополнительная информация в этом вопросе: http://stackoverflow.com/questions/1793147/sql-best-practice-to-deal-with-default-sort-order –
Помните, что строки в базе данных не упорядочены, если вы не 'ORDER BY' в запросе. – jkj