Я использую PHP и SQL и пытаюсь вставить данные пользователя в две таблицы при регистрации. Первый в user_table и второй в character_table. Я использую автоматически генерирующий user_id, чтобы связать таблицы, и мне нужно получить значение user_id из первого INSERT (into user_table), а затем добавить его в столбец в character_table .

Я попробовал несколько методов и на этом закончил ($ username, $ email, $ password и $ character определены выше);

$sql = "INSERT INTO 
user_table (id, username, email, password)
VALUES ('NULL', '".$username."', '".$email."', '".$password."')

INSERT INTO
character_table (name, id)
VALUES ('".$character."', 'LAST_INSERT_ID()')";"

Я хочу, чтобы «id» из user_table совпадал с «id», вставленным в character_table.

Когда я запускаю вышеуказанное, кажется, что ничего не происходит. Предыдущие попытки я всегда заканчивал с id = 0. Как правильно я могу получить идентификатор из первого INSERT?

0
J.Doe 30 Ноя 2017 в 21:21

1 ответ

Лучший ответ
  1. Выполняйте свои утверждения отдельно. Вы запускаете вставку в свой user_table, затем берете id, затем запускаете вставку в свой character_table
  2. Вы можете захватить id с помощью mysql_insert_id после выполнения вставки. Обратите внимание, что на веб-странице php с подробным описанием {{X2} }, что она устарела, как и все функции mysql*. Что приводит к...
  3. Ради всего святого, не связывайте свои переменные напрямую с оператором INSERT. Переключитесь на функции mysqli * или PDO, если вы еще этого не сделали, и используйте подготовленные операторы (параметризация запроса). Если вы создаете приложение с использованием mysql, это означает, что вы не параметризуете свои запросы, что означает, что вы подвергаетесь огромному риску атаки с использованием sql-инъекции.

Если / когда вы переключитесь на функции mysqli или PDO, вы найдете эквивалентную функцию mysqli_insert_id() (или PDO::lastInsertID())

1
JNevill 30 Ноя 2017 в 18:48