仔细看视频,有讲到,插入两条记录是分别插入两次,不是一次性插入两条。
可能是$pdo = new pdo('mysql:host=localhost')那里好像不是mysqli
如果你的项目对数据库类型没太大的要求,只用mysql的话,之前你又数据mysql的写法,可以使用mysqli扩展,面向对象和面向过程两种写法都可以。如果你的项目要兼容多个不同类型的数据库的话,建议使用pdo,扩展性好,两者的性能都差不多。主要看你的用途
懂了。忘记了是直接要添加,不是对添加页面的处理。晕……
你指的是bindParam()后面设置的参数类型吗? PDO::PARAM_STR修改成 PDO::PARAM_INT吗?
bindParam()使得代码更加健壮一些,试想一下如果要是执行一个很多的参数的array,举个例子,项目初始的时候,只有5个参数,但是扩展业务的时候,需要扩展更多的参数,那你代码重构的时候需要在array()里面添加一堆的参数,这样会使得代码的可读性变的很差,无论是用于今后的重构,还是扩展业务,都是不利的。而使用bindParam()之后,代码直观,可用性也很高,不用的那一行,完全可以在前面 // ,代码调试也很好。
以上是以软件工程角度出发的个人想法
讲的很清楚了,有2种防止注入的方式,一种是通过QUOTE()函数去设置拦截,这种方式是通过QUERY本身的sql语句产生的对象,来调用这个函数进行某一个比如用户名的拦截,第二种是通过预处理语句,prepare准备SQL语句进行调用,调用的本身采用字符串过滤,所以等于直接防止了SQL注入,第一种=自行车,第二种=宝马,实际开发都是看情况的,大项目=大街,小项目=小巷,宝马开不进小巷,自行车走大街显得寒碜
其实你的SQL语句是select * from 'yd_user';
execute() 传参或 bindValue() 是绑定常量到参数;bindParam() 是绑定变量到参数。
相比之下,绑定变量更加灵活。