适用PHP版本(PHP 8 >= 8.2.0)
说明
面向对象风格
public mysqli::execute_query(string $query, ?array $params = null): mysqli_result|bool
过程化风格
mysqli_execute_query(mysqli $mysql, string $query, ?array $params = null): mysqli_result|bool
准备SQL查询、绑定参数并执行查询。mysqli::execute_query()方法是mysqli::prepare()、mysqli_stmt::bind_param()、mysqli_stmt::execute()和mysqli_stmt::get_result()的快捷方式。语句模板可以包含零个或多个问号(?)参数标记-也称为占位符。参数值必须使用params parameter作为数组提供。
预处理语句是在底层创建的,但绝不会在函数外部公开。不可能像访问mysqli_stmt对象那样访问语句的属性。由于这个限制,状态信息被复制到mysqli对象中,并可以使用它的方法,例如mysqli_affected_rows()或mysqli_error()。
注意
如果传递给mysqli_execute_query()的语句比服务器的max_allowed_packet长,则返回的错误码会根据操作系统的不同而不同。其行为如下:
在Linux上返回错误码1153。错误消息意味着得到的数据包大于max_allowed_packet字节。
在Windows上返回错误代码2006。此错误信息表示服务器已消失。
参数
mysql
仅以过程化样式:由 mysqli_connect() 或 mysqli_init() 返回的 mysqli 对象。
query
查询,作为字符串。它必须由单个SQL语句组成。
SQL语句可以在适当位置包含零个或多个由问号(?)字符表示的参数标记。
注意:
这些标记仅在SQL语句中的某些地方是合法的。例如,在INSERT语句的VALUES()列表中允许使用它们(为一行指定列值),或者在与WHERE子句中的列进行比较时允许使用它们来指定比较值。但是,它们不允许用于标识符(如表或列名)。
params
一个可选的列表数组,其中的元素数量与正在执行的SQL语句中的绑定参数数量一样多。每个值都被视为字符串。