<?php
include('connection.php');
/* code for id goes here */
$q2= "select MAX(id) from usertable";
echo mysqli_query($sql,$q2);
$name=$_POST['name'];
$username=$_POST['usrname'];
$password=$_POST['psw'];
$dob=$_POST['date'];
$query = "insert into usertable(name, username, password, dateofbirth) values('$name', '$username','$password','$dob')";
if (mysqli_query($sql,$query))
{
echo "Registered successfully";
}
?>
Это моя команда вставки для регистрации пользователя в моей базе данных. Однако база данных содержит столбец с именем id, который является первичным ключом. Как мне получить идентификатор перед выполнением запроса на вставку, чтобы он получил последний идентификатор, увеличил его на 1 и вставил его в базу данных вместе с другими данными. Идентификатор является числовым, и я хочу, чтобы программа выполняла операцию сама, а не пользователь вводил данные идентификатора. Пожалуйста помоги.
исследовать заявления select
Это уже выглядит небезопасным для использования в живой среде. Надеюсь, вы это понимаете.
Вам не нужно НИЧЕГО делать со столбцом id
, если он определен как ключ АВТОМАТИЧЕСКОЕ ПРИРАЩЕНИЕ. MySQL позаботится обо всем за вас
Вам нужно написать запрос
SELECT MAX(id) FROM usertable
и получите результат, затем увеличьте это значение на 1, а затем установите это значение в поле id
.
Просмотрите обновленный код. он генерирует следующую ошибку. Объект класса mysqli_result не может быть преобразован в строку.
Вы можете использовать следующий код: $ rs = mysqli_query ($ con, «выберите MAX (id) как max_id от пользователей»); $ row = mysqli_fetch_row ($ rs); $ max_id = $ row [0]; $ max_id ++; $ query = "вставить в значения таблицы пользователя (id, имя, имя пользователя, пароль, дата рождения) ('$ max_id', '$ name', '$ username', '$ password', '$ dob')";
Вам нужно настроить поле идентификатора на автоматическое приращение, и ваша база данных сделает это автоматически:
ALTER TABLE пользовательская таблица MODIFY COLUMN id INT auto_increment;
Ваш сценарий широко открыт для Атака с использованием SQL-инъекции Даже если вы избегаете ввода, это небезопасно! Используйте подготовленные параметризованные операторы в API
MYSQLI_
илиPDO