使用PDO创建数据表时出现Call to undefined method PDO::execute()错误
问题分析与解决
你遇到的这个错误核心原因很明确:你直接调用了PDO对象的execute()方法,但这个方法并不属于PDO类本身——execute()是PDOStatement类的专属方法,只有当你通过PDO的prepare()方法创建出预处理语句实例后,才能调用这个方法。
针对CREATE TABLE这类不需要绑定参数的DDL(数据定义语言)语句,有两种更合适的修正写法:
方法1:使用PDO的exec()方法
exec()方法专门用于执行不需要返回结果集的SQL语句(比如创建表、插入、删除、更新等操作),直接传入SQL字符串即可完成执行:
<?php session_start(); require("../connecting-to-database.php"); $query = "CREATE TABLE `classes`( `ID_class` int(11), `name` varchar(255), PRIMARY KEY(`ID_class`) )"; $pdo->exec($query);
方法2:先预处理再执行(适合后续复用或绑定参数的场景)
如果后续你需要对这条SQL做参数绑定,或者重复执行该语句,可以先通过prepare()创建PDOStatement对象,再调用它的execute()方法:
<?php session_start(); require("../connecting-to-database.php"); $query = "CREATE TABLE `classes`( `ID_class` int(11), `name` varchar(255), PRIMARY KEY(`ID_class`) )"; $stmt = $pdo->prepare($query); $stmt->execute();
简单来说,你之前的代码混淆了PDO对象和它生成的PDOStatement对象的方法范围,只要调整调用方式就能解决问题啦!
内容的提问来源于stack exchange,提问作者user9854912
相关产品推荐
相关产品推荐

