php与mysql学习笔记

来源:互联网 发布:江苏科技大学网络 编辑:程序博客网 时间:2024/05/18 01:42

下午看了《PHP与MySQL》程序设计的第30章:结合使用PHP与MySQL和第31章:PDO介绍,有几个问题想搞清楚

  1. 如果表之间的关系比较复杂,比如表所代表的实体间是多对多的关系,怎么在插入数据的时候保证参照完整性?
  2. PDO中可以获取分别获取结果集中每一行的数据,也可以获取整个结果集,这是怎么实现的?是通过什么方法指定MySQL提供结果集中的哪一行?
  3. 怎么在使用PHP操纵数据库时编写安全的代码,防止SQL注入
  4. 如何阻止用户获取脚本的内容,比如一个写有数据库用户和密码的脚本?


1.如果表之间的关系比较复杂,比如表所代表的实体间是多对多的关系,怎么在插入数据的时候保证参照完整性?

     记得在使用Hibernate的时候,一个多对多关系需要在两端都设置好他们通过哪个中间表相连,以及中间表的列对应哪个表的主键就可以了。比如新建了一个order对象,新建了若干个product对象加入order对象拥有的集合中,当保存这个order对象时就会级连保存相关的product对象,这时候有三个表会被改变:order,product,order-product(作为中间表).

   但是相关的SQL语句的执行顺序是怎么样的呢?当使用自增长主键时,应该只有在插入了一条记录以后才能获取它的主键值,而在获取相关的主键值只前,中间表的外键的值是无法确定的。但是在插入一个记录后,如何获取这个记录得到的主键值呢?通过select和where吗?那这个where就必须包括刚插入数据的所有列,这样在效率上好吗?使用着也不方便呀?实际上是这样做的吗?