在php中使用pdo时,当必须同时向表中插入多行时,我使用的sql如下所示:
INSERT INTO some_names (firstName, lastName) VALUES ('Joe', 'Smith'),('Fred','Sampson'),('Lisa','Pearce');
如您所见,我用一个语句插入了三行。我这样做的原因是,我相信它比执行三个不同的语句来插入行更有效。
所以我的问题是:如果我想像在单个语句中那样将值绑定到一个语句,那么如何在php中实现这一点:
$query= ("INSERT INTO table (firstName, lastName) VALUE (:firstName, :lastName)", array = (
"firstname"=>$firstName,
"lastName"=>$lastName));
所以我的问题是:有没有什么方法可以绑定到multi-insert语句中?比如:
INSERT INTO table (firstName, lastName) VALUES((:firstName, :lastName),(:firstName, :lastName));
2条答案
按热度按时间kmpatx3s1#
只需创建查询文本
?
占位符为:然后执行它。示例代码可以是:
qv7cva1a2#
从理论上讲,一条语句可能更有效,因为您可以避免多次调用mysql server,但实际情况是,这是一种微优化,您将代码过度复杂化,几乎没有任何好处。
prepared语句的酷之处在于它只准备了一次,可以执行多次。这已经节省了多次解析sql语句的时间。只需在循环外准备一条语句,然后在循环内执行它。
如果您按照注解中的常识将整个事务 Package 在一个事务中,那么与一个大语句相比,性能没有明显的差异。