ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理” 该sql语句的“形式”中,含有“未给定的数据项”。 然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方便执行。 比如(有两种预定义语法): 语法1: $sql = “select * from tab where id = ? “; //这里这个“?”就是未给定的数据项;这里通常叫做“占位符”//也可以是多个问好。 语法2: $sql = “select * from tab where id = :v1 and name = :v2 “; //这里这个“:v1”和 “:v2” 就是未给定的数据项;通常这里叫做“命名参数”; # 使用 1,对含预处理语法的sql语句进行“预处理”: $stmt = $pdo->prepare( $sql ); 2, 对上述预处理的结果对象($stmt)的未赋值数据,进行赋值: $stmt->bindValue( 数据项1, 值1); $stmt->bindValue( 数据项2, 值2); 3, 执行:$stmt->execute(); 这样之后,该sql语句就算正式完成 ![](https://box.kancloud.cn/9eb628978b8d1509fd6df5656858bdea_662x618.jpg) 问题:在预处理功能使用时,应该使用文本标识还是使用问号呢? 答:对于这个问题,没有严格的规定,你既可以使用文本标识也可以使用问号,两者的功能都是一致的,唯一的不同就是语法的不同。 ① 如果使用文本标识,其在数据传递时,要求数组是一个关联型数组 ② 如果使用问号标识,其在数据传递时,要求数组是一个索引型数组,索引从0开始 # 占位符的处理形式 ![](https://box.kancloud.cn/bf79deb766a2c93408528db1d497b322_1498x464.jpg) # 命名参数的处理形式 ![](https://box.kancloud.cn/d08b1c5b1267304d7dc45dd1c5272121_1348x386.jpg) # 使用bindParam实现参数绑定 要使用到的知识点: • bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable) 主要功能:实现对参数的绑定 参数说明: $parameter :要绑定的参数 特别注意:如果以上参数,使用的是?问号标识,其绑定时索引是从1开始的! &$variable :要设置的参数值,按引用传递 ![](https://box.kancloud.cn/b1fb260723035e3082b926413124520c_924x664.jpg) ![](https://box.kancloud.cn/7fbef992a2c297c5640dd28444d72b95_706x690.jpg) 如果要重复就重复第6步