PHP Mysql从多个表中选择查询

I have 2 tables. The parent table is learn_more and child table is reference_keys Both tables are innodb

reference_keys has two columns:
key_id [index]
key_href


learn_more table
id [primary]
keys_id [foreign key]
page_title    
page_content

What I am trying to do is get multiple links in the learn more table from the reference_keys table. So example, learn_more table id:1, keys_id:1,3,4,8,13,25,..., page_title:Home Page: blah blah, page_content: blah blah......

The problem is that phpmyadmin will not allow me to put more than 1 id in the keys_id of learn_more.

//ERROR
//Warning: #1265 Data truncated for column 'keys_id' at row 1

I'm guessing the relation view is not setup correctly. - How do i fix this?

and on my page it shows the key_id in the echo instead of the value for the id: which is the key_href. so my page show "1" instead of the value for 1 which is a link..

Perhaps my sql query is not correct?

$SQL = "SELECT * FROM learn_more WHERE page_title = '$this_page'";

To build a many-to-many here is what you could do:

reference_keys has two columns:
key_id [index]
key_href

learn_more_to_reference_key
reference_key_id [FK to reference_keys]
learn_more_id [FK to learn_more]

learn_more table
id [primary]
page_title    
page_content

Then you have essentially a 1:N on each side of the relationship. Notice that I removed the FK from the learn_more table, too.

So to grab the relationship you'd query like this:

SELECT * FROM Learn_More lm 
INNER JOIN learn_more_to_reference_key lmtrk ON lm.id = lmtrk.learn_more_id 
INNER JOIN reference_keys rk ON rk.id = lmtrk.reference_key_id

I believe the inner join is correct, i'm double-checking that.

If you want to have one row in learn_more correspond to multiple rows in reference_keys, you need to move the foreign key field from the learn_more table to the reference_keys table.

So instead of having a foreign key field in learn_more that points out to multiple rows of reference_keys (which, as you seem to be running into, is not supported), you have the multiple rows of reference_keys all point back to the learn_more table.

This would implement a one-to-many relationship between learn_more and reference_keys. If you need a many-to-many relationship (where each reference_key rows can be connected to many learn_more rows and vice-versa) you need to use a third table to establish a link between the two databases. See http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php for more information.

You're getting the keys_id because that is what is in the learn_more table. To get the key_href, you'll need to JOIN the learn_more table to the reference_keys table. Also, @ametren is correct - you should have a many-to-many table that links your two current tables.

key_linking_table
id [primary and foreign key]
keys_id [primary and foreign key]

$SQL = 
"SELECT lm.id, lm.page_title, lm.page_content, rk.key_href
 FROM learn_more AS lm
 LEFT JOIN key_linking_table AS klt
 ON klt.id = rk.id
 LEFT JOIN reference_keys AS rk
 ON klt.key_id = rk.key_id
 WHERE [condition]"