Php Mysql:在创建/编辑图书表时,从另一个表的列表中选择值(作者)

Php Mysql:在创建/编辑图书表时,从另一个表的列表中选择值(作者),php,mysql,Php,Mysql,很难解释我需要做什么,但我想知道是否有人能帮助我,我对Mysql很陌生,刚刚开始学习。 所以我有4页,书单和作者名单也增加了新的作者和新书。其中一项任务是在添加新书或edting时,我可以从该书的作者列表中选择一位作者,也可以将其留空。使用 创建了以下3个表: create table books( id INTEGER PRIMARY KEY AUTO_INCREMENT, title varchar(255), author_id integer, grade

很难解释我需要做什么,但我想知道是否有人能帮助我,我对Mysql很陌生,刚刚开始学习。 所以我有4页,书单和作者名单也增加了新的作者和新书。其中一项任务是在添加新书或edting时,我可以从该书的作者列表中选择一位作者,也可以将其留空。使用

创建了以下3个表:

create table books(
    id INTEGER PRIMARY KEY AUTO_INCREMENT,
    title varchar(255),
    author_id integer,
    grade integer,
    is_read varchar(255) // when using bool, gives an error
);
到目前为止,我已经这样做了,但在添加或编辑书籍数据时,我仍然无法从作者列表中选择作者

function getBooks()
{
    $connection = getConnection();
    $books = [];

    $getBooks = $connection->prepare("SELECT books.id, books.title, author.first_name, author.last_name,
    books.grade, books.is_read FROM books LEFT JOIN books_author INNER JOIN author ON
    books_author.author_id = author.id ON books.id = books_author.book_id WHERE title is not null ");
    $getBooks ->execute();
    foreach ($getBooks as $book) {
        $books[] = ["id" => $book['id'], "title" => urldecode($book['title']),"grade" => trim($book['grade']), "isRead" => trim($book['is_read'])];
    }
    return $books;
}

左连接。。。在…上你能扩展的正常语法是否不能-发生了什么?在我看来,这个查询不正确——如果在phpmyadmin中执行它,它是否可以正常工作?是的,如上所述,我认为您已经混合了联接,并在第一个联接中附加了一个联接。有关进一步的帮助,请参阅:
create table books_author(
    author_id integer,
    book_id integer
);
function getBooks()
{
    $connection = getConnection();
    $books = [];

    $getBooks = $connection->prepare("SELECT books.id, books.title, author.first_name, author.last_name,
    books.grade, books.is_read FROM books LEFT JOIN books_author INNER JOIN author ON
    books_author.author_id = author.id ON books.id = books_author.book_id WHERE title is not null ");
    $getBooks ->execute();
    foreach ($getBooks as $book) {
        $books[] = ["id" => $book['id'], "title" => urldecode($book['title']),"grade" => trim($book['grade']), "isRead" => trim($book['is_read'])];
    }
    return $books;
}