Отношение «многие ко многим» INSERT

Я пытаюсь создать много-много отношений между двумя таблицами. Для этого у меня есть 3 таблицы. Это следует из модели TOXY.

table a: a.id (primary key) table ab: ab.a_id (foreign key) ab.b_id (foreign key) table b: b.id (primary key) 

Как мне вставить данные, чтобы они были связаны?

Как это? "INSERT INTO a ('name') VALUES ('my name')";

то вот так? "INSERT INTO b ('name') VALUES ('my name')";

но тогда я должен иметь a.id и b.id, чтобы поместить его в таблицу ab. Как мне их получить?

Я знаю, что могу сделать SELECT a.id FROM WHERE name = 'мое имя'. но разве нет более простого способа для этого, который автоматически возвращает id, когда u INSERT в строке?

Все, что вам нужно сделать, это сохранить эти идентификаторы в переменных, которые будут использоваться в запросе для вставки в таблицу ab . LAST_INSERT_ID() возвращает идентификатор вставленных строк. Итак, в PHP, например:

 // Run command to insert into A, then: $a = mysql_query('SELECT LAST_INSERT_ID();'); // Run command to insert into B, then: $b = mysql_query('SELECT LAST_INSERT_ID();'); // Then $a and $b hold the IDs that you can use to insert into AB. mysql_query("INSERT INTO ab (a_id, b_id) VALUES ($a, $b);"); 

Вы можете получить значение, сохраненное в столбце первичного ключа auto_increment, вызвав функцию mysql_insert_id () :

 SELECT LAST_INSERT_ID() 

Я не уверен, что такое TOXY, но вы бы использовали простое соединение:

SELECT * FROM a INNER JOIN ab on a.id=ab.a_id WHERE ab.b_id = {b.id};

и для вашего экземпляра {b.id} будет last_insert_id ();