автоинкрементное значение ID
у меня есть сомнения относительно значений AUTOINCREMENT в MySQL
в системе, которую я разрабатываю, он позволяет сохранять проекты и соответствующие документы, которые он должен нести (записи, письма, таблицы), в окне регистрации он просит вас ввести код, который будет идентификатором, я в моей таблице проектов у меня есть значение autoincremental.
но что происходит, код, который у меня есть для сохранения проекта, считывает значение, которое находится в текстовом поле proy_id, а затем делает сохранение, если я оставил этот флажок пустым в базе данных, если я сохранил запись как id:1, id: 2, id:3, но не сохранил документы, потому что я не нашел идентификатор проекта сохранить.
мой вопрос заключается в том, как я могу сделать, чтобы в коде появилось автоматическое значение, если возможно, которое будет сохранено в базе данных, которое выйдет 1 , 2 , 3 , 4, 5
<input type="text" maxlength="5" class="form-control" name="proy_id" id="proy_id" value="" placeholder="Código del Proyecto" >
</div>
</div>
мне сказали поместить "value", но я не знаю, как назвать это из базы данных или как создать его
Этот код сохраняет проект и его требования
<?php
include 'conexion.php';
bd_proyecto_agregar($_REQUEST);
foreach ($_REQUEST['requ'] as $requisito_id){
$requisito = array('proy_requ_id' => NULL, 'proy_id' => $_REQUEST['proy_id'], 'requ_id' => $requisito_id);
bd_proyecto_requisito_agregar($requisito);
}
header("Location: listado2.php");
exit;
?>
4 answers
Ваша функция "bd_projecto_regar" должна возвращать идентификатор проекта, который был автоматически создан в mysql, чтобы получить этот идентификатор, вы должны вызвать функцию "mysql_insert_id () " сразу после выполнения INSERT.
Как только вы вернете этот идентификатор, вы сохраните его в переменной и передадите его вместо передачи " $_REQUEST ['proy_id']".
С тем, что код будет выглядеть так:
<?php
include 'conexion.php';
$id = bd_proyecto_agregar($_REQUEST);
foreach ($_REQUEST['requ'] as $requisito_id){
$requisito = array('proy_requ_id' => NULL, 'proy_id' => $id, 'requ_id' => $requisito_id);
bd_proyecto_requisito_agregar($requisito);
}
header("Location: listado2.php");
exit;
?>
Доброе утро,
Я думаю, что здесь также есть путаница концепций, в принципе ID вы не должны его изменять, вместо этого должно существовать поле ID и одно, называемое кодом, я рекомендую внести изменение в базу данных, т. е.:
Определение поля с именем ID, которое является autoincremental и полем (в данном случае proy_id, я полагаю), где код вашего проекта сохраняется, идея поля AUTOINCREMENT в MySQL заключается в том, чтобы иметь ключ, который никогда не изменяется, в этом случае уникальный идентификатор ваших записей, который вы на 100% уверены, не будет повторяться в вашей таблице, потому что он автоматически увеличивается, с другой стороны, в вашем поле proy_id, которое может быть varchar(например), вы можете сохранить другую номенклатуру, PROY-001-а, PROY-001-B или что-то подобное.
¿Как сделать манипуляции с реестром?
Просто, когда вы делаете INSERT, вы пишете
INSERT INTO имя_таблицы ( proy_id,описание и т.д.... ) VALUES ( "PROY-001-а", "этот проект О"и т.д.... );
И будучи INSERT, поле AUTOINCREMENT будет автоматически введено и готово к следующей записи, и когда вы делаете UPDATE, вы пишете:
UPDATE имя_таблицы SET proy_id = "PROY-001-B", описание="это еще одна модификация" и т. д... WHERE id = $id
Где $ id будет значением, которое вы отправляете в своем $REQUEST (что-то вроде value, которое вам сказали добавить), что может выглядеть как
<input type="hidden" name="id" value="<?php echo $respuestaBD['id']?>" />
$id = $_REQUEST['id']
и отправить его в свой массив $ требование, определенное в коде, который вы опубликовали.
Я надеюсь, что этот подход будет полезен для вас.
Приветствия,
Я думаю, что просто когда вы делаете insert
проекта в базе данных, вы должны пропустить поле своего идентификатора, тогда MySQL, видя, что для этой записи нет значения, автоматически назначит соответствующее значение auto increment
столбца.
Надеюсь помочь вам, привет.
Если вы хотите, чтобы идентификатор был назначен пользователем (например, потому что он напечатан в физической форме ), вы не должны использовать auto increment. Для связанных документов в другой таблице вы должны иметь два столбца, которые образуют ваш индекс идентификатор (документа ) auto inc и идентификатор проекта , поэтому, если вы введете проект 993 в таблицу проектов, он останется:
id: 99 obs: proyecto ingresado por pepito en la de documentos: id: 1023 proyecto_id: 99 documento: planilla excel id: 1024 proyecto_id: 99 documento: documento pdf
И индекс на (project_id, id) во второй таблице поможет вам получить доступ по порядку и быстро проектная документация
SELECT * from documentos where proyecto_id=99 order by id