php - 有没有更好的方法来插入记录?

标签 php mysql database

我有一个类(class)项目,使用 mysql 和 php 构建图书馆管理系统。

我的图书馆中有 3 项内容:书籍、音频和视频。每一种都有不同的属性和一个项目 ID。

表格:

 ITEM(item_id A.INCREMENT, TYPE)
 BOOK(b_id,name,author etc.)
 VIDEO(v_id, ETC.)
 AUDIO(a_id, ETC.)

但是,我必须使用3条sql语句将项目添加到特定表和项目表中。有更好的方法吗?实际上我不需要 ITEM 类,我使用它只是为了更通用。没有它会很糟糕吗?

这就是用途。

$sql="INSERT INTO ITEM  values(NULL,'BOOK') ";
        $query = $this->db->query($sql);
        $sql="SELECT ID as id FROM ITEM  WHERE ID=last_insert_id()";
        $query=$this->db->query($sql)->row_array();
        $name =  $book_name;

        $sql = "INSERT INTO BOOKS values ('".$query['id']."','".$name."','".$author."','".$title."','".$year."','".$price."','AVAIBLE',NOW(),'0')";
        $query = $this->db->query($sql);

最佳答案

INSERT INTO ITEM (`type`) values ('BOOK');

INSERT INTO BOOKS (b_id, name, author) 
select last_insert_id(), '$name', '$author';

顺便说一句,如果您使用准备语句,您的查询将更具可读性并可防止 SQL 注入(inject)。

关于php - 有没有更好的方法来插入记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985214/

相关文章:

php - SWFUpload 选择文件后会发生什么?

javascript - 尝试使用 AJAX 发送 FormData 时表单数据未通过?

database - 数据库为什么以及如何使用单个文件来存储所有数据?

database - Oracle - 表名和列 - 我可以更改大小写吗?

php - 将两个 Laravel 集合与交替的行组合起来

php - mysql 所有查询都不能在 php 同一个文件中工作

php - 宅基地 laravel Vagrant 不允许窗口

Mysql存储过程在sql查询中使用游标获取变量

sql - 如何编写将 .csv 文件中的数据匹配到 MySQL 中的表的 SQL 查询?

mysql - 对 varchar 列中包含文本和数字的数据进行排序