2010-09-30 2 views
1

У меня есть эта проблема в моей системе, мне нужно зарегистрировать пациента в системе, у пациентов reference_number используется резервирование в больнице. проблема, которую я получил, - это когда пациент зарегистрирован в системе, резервирование производится одновременно, мне нужно обновить две таблицы, таблицу пациентов и таблицу резервирования, я должен взять номер_рекламы из таблицы пациентов и ввести ее в резервацию table.reference номер должен быть взят из базы данных, а новый должен быть одним приращением, чем старый. как это сделать? Я в замешательстве об этом. :(как вставлять данные в две таблицы одновременно?

Я develping систему с помощью CodeIgniter, PHP и MySQL

С уважением, Rangana

+0

Какую библиотеку баз данных вы используете для доступа к базе данных mysql, простым php mysql_ * функциями, доктриной или чем-то еще? – thomasmalt

+0

Это немного сложно дать правильный ответ, так как ваше объяснение немного запутанно. не могли бы вы уточнить? являются ли открытые ключи таблиц, определенные с помощью auto_increment, или вам нужно сделать это вручную? – thomasmalt

+0

@thomasmalt: Я использую активную запись в codeigniter для доступа к базе данных, у меня есть reference_number таблицы пациентов в качестве автоматического приращения, а также первичный ключ таблицы резервирования также автоматически увеличивается. я должен взять первичный ключ стола пациента и поместить его в таблицу бронирования, чтобы сделать заказ. –

ответ

1

Я думаю, вы легко можете сделать это с двумя операторами вставки сразу после друг друга и использовать mysql_insert_id для . получать идентификатор предыдущего запроса Но это может не работать для вас, если ваши таблицы определяются по-разному:

mysql_query('INSERT INTO patients [...]'); 
$patientId = mysql_insert_id(); 
mysql_query('INSERT INTO reservations [...]'); 
+0

Общая методика должна быть действительной независимо от структуры ORM. – thomasmalt

1

Я немного толкнул на время сегодня утром, так что простите меня, если что это не Fülle r информация. Я также ничего не знаю о codeigniter, поэтому, надеюсь, он поддерживает хранимые procdures.

В MySQL есть функция LAST_INSERT_ID() (см http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id)

Вы должны быть в состоянии использовать это в хранимой процедуре, чтобы обновить вторую таблицу с идентичностью из первых.

Надеюсь, что это поможет.

1

Идя по неясной информации, вы можете сделать это, как показано ниже.

$this->db->insert('patients_records_tbl', $data); 
$last_id = $this->db->insert_id(); 
$this->db->insert('other_tbl', array('patient_id' => $last_id)); 

Я надеюсь, что это смутно закроет его для вас.

+0

Не слишком ли рискованно использовать $ this-> db-> insert_id(), поскольку все мы знаем, что это получит последний вставленный идентификатор в базе данных? что, если есть два пользователя, которые выполняют один и тот же процесс одновременно? Мы всегда должны рассматривать такие сценарии. – Orvyl

0

thomasmalt, JonRed и Джеймс Норман Thanx ребята за большую помощь

Это код

$this->db->insert('patient',$data);

$sql = "SELECT LAST_INSERT_ID()"; 
$query = mysql_query($sql); 
    if ($query) { 
    $row = mysql_fetch_row($query); 
    $lastID = $row[0]; 
} 

$this->db->insert('visit',$visit_data);

$ данных и $ visit_data являются два массива содержащие данные вставки, $ visit_data содержит $ lastID

надеюсь, что вы, ребята, также можете использовать это в будущем :)

Смежные вопросы