Несколько вещей:
Таблица заимствований связывает книгу и таблицу пользователей, поэтому вам нужен идентификатор из каждой таблицы:
Вставить заимствованную книгу:
public function insertInfo($user_id, $book_id) {
$sql = "INSERT INTO borrowbook (u_Borrower, b_Title, b_id, u_id)
SELECT u.fullname, b.bookTitle, b.id, u.user_id
FROM users AS u, book AS b
WHERE u.user_id = {$user_id} AND b.id = {$book_id}";
$stmt = $this->conn->prepare($sql);
$stmt->execute();
}
При обновлении строки используйте UPDATE, а не INSERT. И не забудьте включить предложение where, иначе каждая строка будет обновлена.
Обновить книгу:
public function updateBook($user_id, $book_id) {
$sql = "UPDATE borrowbook SET borrowDate = ?, returnDate = ? WHERE u_id = {$user_id} AND b_id = {$book_id}";
$stmt = $this->conn->prepare($sql);
$stmt->bindparam(1, $this->borrowDate);
$stmt->bindparam(2, $this->returnDate);
$stmt->execute();
}
Как упоминалось в @Barmar, при объединении таблиц вы хотите сохранить только идентификаторы и новая информация. Не сохраняйте название книги, потому что оно уже хранится в таблице книги.
Предпочтительная структура таблицы заимствований следующая:
TABLE BORROWBOOK
borrow_id | borrowDate | returnDate | status | b_id | u_id
Если вы переместите статус в книгу таблицу, вы можете обновить статус с помощью этого метода:
public function setBookStatus() {
$sql = "UPDATE book SET status = ? WHERE id = ?";
$stmt = $this->conn->prepare($sql);
$stmt->bindparam(1, $this->status);
$stmt->bindparam(2, $this->b_id);
$stmt->execute();
}
На странице вам необходимо сохранить идентификатор книги (b_id) для обновления.