亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用一個表項中的 id 連接另一個表項

如何使用一個表項中的 id 連接另一個表項

PHP
肥皂起泡泡 2022-01-08 17:45:45
我對 php 和 sql 很陌生,并且在創建 Web 應用程序時正在學習,所以我想知道這將如何實現,如果有的話,或者對于這類任務是否有更好的做法。舉個例子:假設我有一個有 2 個表的數據庫,一個是作者,另一本書author table-----------id | author1 | jones2 | janebook table----------id | title | author1 | Learning php | 1 <- i want this to reference the author from author table2 | Foobar | 13 | How to give a proper high five | 2我有一個表單,它從查詢中獲取作者姓名作為選擇標簽,當我提交表單時,我想將 id 分配為 book 表中作者的值$authorQuery = mysqli_query($con, "SELECT * FROM author");<form id="bookForm" action="books.php" method="POST"><label for="title">Book Title</label>        <input type="text" name="title"><label for="author">Author</label>        <select id="author" name="author">                <?php                    while($row = mysqli_fetch_array($authorQuery)) {                                    //display as an array in a drop down list                        echo '<option>' . $row['author'] . '</option>';                            }                ?></form>我該怎么辦?
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

我會將選項值設為作者 ID,更改此設置


echo '<option>' . $row['author'] . '</option>';

對此


echo '<option value="' . $row['id']. '">' . htmlspecialchars($row['author']) . '</option>';

現在,當提交此表單時,在服務器上您將在$_POST['author']變量中收到作者的 id ,因此您可以使用 id 而不是作者的姓名進行更新查詢。


$query = "update book set author_id = ? where title = ?";

$stmt = $con->prepare($query);

$stmt->bind_param("is", $_POST['author'], $_POST['title']);

$stmt->execute();

建議:

  1. 這個方案意味著你的關系是1:m(1個作者可以寫很多書,但是1本書必須只有1個作者寫),這是不正確的,因為很多書是由很多作者寫的,所以你需要使用第三個連接表來表示多對多關系m:m

  2. 默認情況下,MySQL 上的搜索不區分大小寫,但是最好<select>為書籍創建 a而不是將書籍<input>的 ID 分配給<option>s 而不是鍵入標題(除非您有太多書籍無法放入選擇中),因此,當您需要填寫表格以將作者分配給一本書時,請確保避免在書名中出現任何拼寫錯誤


查看完整回答
反對 回復 2022-01-08
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

最簡單的方法是


  <?php  $stmt = $conn->prepare("SELECT * from book")

    $stmt->execute();


     foreach($stmt as $row){

    $id = $row['author'];

$stmt = $conn->prepare("SELECT * from author WHERE id='$id'")

    $stmt->execute();

    foreach($stmt as $row){

    $name = $row['author'];

?><option value="<?php echo $name;?>"><?php echo $name;?></option>

    }

    }

復雜方法是


    $stmt = $conn->prepare("SELECT *, book.author AS bookauthor FROM book LEFT JOIN author ON author.id=book.id");

        $stmt->execute();

foreach ($stmt as $row) {

?><option value="<?php echo $row['bookauthor'];?>"><?php echo $row['bookauthor'];?></option>

}


查看完整回答
反對 回復 2022-01-08
  • 2 回答
  • 0 關注
  • 197 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號