@alexbal2013 Как-то странно: вы пришли сюда спросить у людей о программировании, которых и программистами-то и не считаете. С таким же успехом могли бы и у продавщицы в магазине спросить.
@Flasher Смотря, что для вас ряды по вертикали. Обычно считают, что первый индекс - это индекс строки, второй - столбца. Т.е., грубо говоря в цикле по i перебираем внутренние {}, а в цикле по k элементы этих {}.
@imran_stxa Использование транзакции исключает возможность возникновения той самой плохой ситуации. И используйте вместо второго запроса last_insert_id()
@imran_stxa А что тут написать более развернуто? Вы не знакомы с транзакциями? Одним из свойств транзакций является изолированность, что означает, что пока эти запросы выполняются, никаких изменений (вики: "В идеале транзакции разных пользователей должны выполняться так, чтобы создавалась иллюзия, что пользователь текущей транзакции — единственный.") не произойдет.
@alltiptop Да, с точки зрения инженера это - избыточность, но кто-то это использует. По крайней мере, когда-то это было.
Вот что еще говорит английская вики:
"Numeric keypads are also used for playing some computer games where the player must control a character, for example roguelikes. Unlike arrow keys, the numeric keypad allows diagonal movement. For keyboards without a numeric keypad, some games provide alternative movement keys, such as classic Rogue's HJKL keys.
The numeric keypad can also be an alternative for navigation in computer gaming from the WASD keys. The mouse would be used in the left hand instead of the right."