'execute'的PHP文档包括example #2(https://www.php.net/manual/en/mysqli-stmt.execute.php#example-1489),如下所示:

$stmt = $mysqli->prepare('INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)');

$stmt->execute( ['Stuttgart', 'DEU', 'Baden-Wuerttemberg'] );

请注意,没有100,这些值作为数组参数101相加.

我试图通过创建表并运行代码来使此示例正常工作:

CREATE TABLE myCity
(
  Name         VARCHAR(99),
  CountryCode  VARCHAR(99),
  District     VARCHAR(99)
) ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 COLLATE=UTF8MB4_UNICODE_CI

但它不起作用,没有插入任何东西,也没有错误消息或警告.我还try 使用变量而不是静态值作为100的参数,但也不起作用.

我是不是遗漏了什么?我误解了这个例子吗?那么100是必需的,而101不应该获得要插入的值吗?

我使用的是PHP版本7.2.18.

推荐答案

Execute中的绑定仅在PHP8.1中可用.如果您运行的是PHP8.0,传递额外的参数会抛出错误.

如果使用PHP7或更早版本,将数组作为参数传递给execute()会触发未定义的行为.这就是为什么您看不到错误,它就是不起作用.

值得指出的是,此功能从PDO扩展中的PHP5开始就可用.PDO有更多的功能,也更容易使用,所以如果您不是很需要使用mysqli,那么可以改用PDO.

Php相关问答推荐

PHP:从数组中获取唯一的数字组合

仅在WooCommerce管理订单视图上显示订单项自定义元数据

在WooCommerce管理订单列表中显示项目总权重

MULTI UPDATE Laravel为什么只能更新我的第一行

在WooCommerce中的本地收件发货方式下添加一个 Select 字段

将部分产品排除在WooCommerce的计算附加费之外

通过访问单个产品页面更新WooCommerce产品元数据

从订单项目中获取ACF WooCommerce产品价值

如何在PHP中组合日期范围

在WooCommerce上设置简单和可变产品的最小订单量

Symfony:从控制器内部调用自定义命令

调用未定义的方法 mysqli::execute_query()

Woocommerce 中为空时隐藏显示变体自定义字段数据

WooCommerce 有关新订单的附加邮箱通知,其中包含具体详细信息

如何在PHP中对多个脚本调用进行排队?

Symfony 迁移判断器在我的工作中失控

如何使用动态变量定义 bind_result?

计算组合指数

是否有适用于 Windows 的真正 64 位版本的 PHP 5.6?

在 laravel 中更新表单时如何在 Select 选项中保留旧值?