Php Mysql:在创建/编辑图书表时,从另一个表的列表中选择值(作者)
很难解释我需要做什么,但我想知道是否有人能帮助我,我对Mysql很陌生,刚刚开始学习。 所以我有4页,书单和作者名单也增加了新的作者和新书。其中一项任务是在添加新书或edting时,我可以从该书的作者列表中选择一位作者,也可以将其留空。使用 创建了以下3个表: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
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;
}