使用php从DB检索一个表,然后选择一个特定的项


Retrieve a table from DB using php and then choose a specific item

我的头可能是模糊的,所以我要解释一下。

我有一个表"books"在我的数据库。我需要使用php检索表,然后选择书和关于书的评论。

我得到了检索部分,显示了一个包含我所有书籍的表。

我被困在选择书籍部分。

下面是我需要做的:

  1. 从DB中检索表"books"
  2. 从表格(即下拉列表等)中选择一些书
  3. 点击提交,转到另一个页面,我可以在那里留下关于那本书的评论
  4. 注释必须记录在DB

我只是需要帮助从表中选择书。怎么做呢?

让我假设您在表簿中有这些行book_id(PI), name author

<form method="post" action="something.php">
<select name="book">
<?php
$stmt = $mysqli->prepare("SELECT id,name,author FROM books");
if($stmt) {
$stmt->execute();
$result = $stmt->get_result();
while ($myrow = $result->fetch_assoc()) {
echo '<option value='.$myrow['book_id'].'>'.$name.' '.$author.'</option>';
}
//instead of $result you can also do
if($stmt) {
$stmt->execute();
$stmt->bind_result($id,$name,$author):
while ($stmt->fetch()) {
echo '<option...
}
?>

如果您同时需要id和名称,或者三个都需要,请访问此链接

如果您想根据某些条件选择图书,例如,让我们输入author=enid

然后像这样修改查询:

$stmt = $mysqli->prepare("SELECT id,name,author FROM books WHERE author=?");
if($stmt) {
$stmt->bind_param("s",$input_name);
$stmt->execute();
.....

然后在something.php中使用$_POST["]来获取用户输入。然后,您可以让表单使用value= id的书的隐藏值创建一个评论框使用提交按钮。然后在另一个表'comments'中,你可以有两行comment_id(PI) book_id和comment

则使用插入查询

$stmt=mysqli_prepare("insert into comments (book_id,comment) values (?,?)");
if($stmt) {
 $stmt->bind_param('is',$book_id,$comment);
$stmt->execute();
}

一定要记住使用$stmt->close()和$stmt->free()。如何做到这一点将由php.net

给出答案。