PHP 分配主键和外键

标签 php mysql crud

我正在尝试将产品分配给类别,我想到的唯一解决方案是将主键(类类别中的类别 ID)与外键(类产品中的类别 ID)分配。

我是否必须对 SQL 代码执行某些操作或更改 index.php 中的代码?

这些代码是为了向读者展示我做了什么!

public class Category {
    public int Id{get;set;}
    public string Name {get;set;}
    }
public class Product{
    public int Id{get;set;}
    public int CategoryId{get;set;}
    public String Brand {get;set;}
    public String Name {get;set;}
    public decimal Price{get;set;
}

我的数据库sql

CREATE TABLE  IF NOT EXISTS `product` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`category_id` INT NOT NULL ,
`brand` VARCHAR( 100 ) NOT NULL ,
`name` VARCHAR( 100 ) NOT NULL ,
`barcode` INT NOT NULL,
`price` DECIMAL NOT NULL
) ENGINE = INNODB;

INSERT INTO `product` (`id`, `category_id`, `brand`, `name`,`barcode`,`price`) VALUES
(1,1,'Coca Cola','Coke',123456789,0.99)

CREATE TABLE  IF NOT EXISTS `category` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`category_name` VARCHAR( 100 ) NOT NULL
) ENGINE = INNODB;

INSERT INTO `category` (`id`, `category_name`) VALUES
(1,'Drinks')

索引.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
</head>

<body>
    <div class="container">
            <div class="row">
                <h3>PHP CRUD Grid</h3>
            </div>
            <div class="row">
                <p>
                    <a href="create.php" class="btn btn-success">Create</a>
                </p>

                <table class="table table-striped table-bordered">
                      <thead>
                        <tr>
                          <th>Id</th>
                          <th>CategoryId</th>
                          <th>Brand</th>
                          <th>Name</th>
                      <th>Barcode</th>
                      <th>Price</th>
                        </tr>
                      </thead>
                      <tbody>
                      <?php
                       include_once 'database.php';
                       $pdo = Database::connect();
                       $sql = 'SELECT * FROM product ORDER BY id DESC';
                       foreach ($pdo->query($sql) as $row) {
                                echo '<tr>';
                                echo '<td>'. $row['id'] . '</td>';
                                echo '<td>'. $row['category_id'] . '</td>';
                                echo '<td>'. $row['brand'] . '</td>';
                  echo '<td>'. $row['name'] . '</td>';
                  echo '<td>'. $row['barcode'] . '</td>';
                  echo '<td>'. $row['price'] . '</td>';
                                echo '<td width=250>';
                                echo '<a class="btn" href="read.php?id='.$row['id'].'">Read</a>';
                                echo '&nbsp;';
                                echo '<a class="btn btn-success" href="update.php?id='.$row['id'].'">Update</a>';
                                echo '&nbsp;';
                                echo '<a class="btn btn-danger" href="delete.php?id='.$row['id'].'">Delete</a>';
                                echo '</td>';
                                echo '</tr>';
                       }

                      ?>
                      </tbody>
                </table>

              <div class="container">
              <div class="row">
              <h3>PHP CRUD Grid</h3>
              </div>
              <div class="row">
              <p>
              <a href="createCategory.php" class="btn btn-success">Create</a>
              </p>
              <table class="table table-striped table-bordered">
              <thead>
              <tr>
                <th>CategoryId</th>
                <th>Category Name</th>
              </tr>
            </thead>

            include_once 'database.php';
            <?php
            $sql2 = 'SELECT * FROM category ORDER BY id DESC';
            foreach ($pdo->query($sql2) as $row) {
                 echo '<tr>';
                 echo '<td>'. $row['id'] . '</td>';
                 echo '<td>'. $row['category_name'] . '</td>';
                 echo '<td width=250>';
                 echo '<a class="btn" href="readCategory.php?id='.$row['id'].'">Read</a>';
                 echo '&nbsp;';
                 echo '<a class="btn btn-success" href="updateCategory.php?id='.$row['id'].'">Update</a>';
                 echo '&nbsp;';
                 echo '<a class="btn btn-danger" href="deleteCategory.php?id='.$row['id'].'">Delete</a>';
                 echo '</td>';
                 echo '</tr>';

             }
             Database::disconnect();
            ?>
              </tbody>
            </table>
        </div>
    </div>


  </body>
</html>
      <!--              <div class="container">
                    <div class="row">
                    <h3>PHP CRUD Grid</h3>
                    </div>
                    <div class="row">
                    <p>
                    <a href="create.php" class="btn btn-success">Create</a>
                    </p>
                            <table class="table table-striped table-bordered">
                    <thead>
                    <tr>
                      <th>CategoryId</th>
                      <th>Catengory Name</th>
                    </tr>
                  </thead>

                  $sql2 = 'SELECT * FROM category ORDER BY id DESC';
                  foreach ($pdo->query($sql2) as $row) {
                       echo '<tr>';
                       echo '<td>'. $row['id'] . '</td>';
                       echo '<td>'. $row['category_name'] . '</td>';

                       echo '<td width=250>';
                       echo '<a class="btn" href="readCategory.php?id='.$row['id'].'">Read</a>';
                       echo '&nbsp;';
                       echo '<a class="btn btn-success" href="updateCategory.php?id='.$row['id'].'">Update</a>';
                       echo '&nbsp;';
                       echo '<a class="btn btn-danger" href="deleteCategory.php?id='.$row['id'].'">Delete</a>';
                       echo '</td>';
                       echo '</tr>';
                     </div>
                   }
                   Database::disconnect();
                  ?>
                    </tbody>
                  </table> -->

最佳答案

基本上,主键和外键是数据库概念。你必须制作 category_id为您的产品表创建一个索引并将外键设置为id您的类别表

关于PHP 分配主键和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510040/

相关文章:

java - 在 PlayFramework 中自定义 CRUD list.html

php - 终身管理网站的用户 session

PHP动态字符串更新引用

php - 间隔 10 分钟的日期和 cron

mysql - 数据库大小会影响 mysql 中的插入时间吗?

angularjs - 在 angularJS CRUD 应用程序中管理数据的最佳方式

php - 覆盖 WordPress 中的插件功能

php - 如何在php代码中调用javascript函数?

mysql - 尝试....在 mysql 中捕获事务?

java - 如何使用JPA和Facade?