首页 >后端开发 >php教程 >为什么我的 MySQLi 准备语句抛出'在非对象上调用成员函数execute()”错误?

为什么我的 MySQLi 准备语句抛出'在非对象上调用成员函数execute()”错误?

Barbara Streisand
Barbara Streisand原创
2024-12-09 18:07:15174浏览

Why Does My MySQLi Prepared Statement Throw a

了解 mysqli 预准备语句

在 mysqli 中使用预准备语句时,遵守特定准则以确保正常功能非常重要。

解决错误

在提供的代码中, error:

Fatal error: Call to a member function execute() on a non-object in ...

表明准备好的语句在执行前没有正确绑定到变量。要解决此问题:

// Bind parameters to variables
$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);

使用 mysqli 进行准备语句

Mysqli 是在 PHP 中使用准备语句的合适选择。它是一个已建立且文档齐全的数据库接口。

带有准备好的语句的完整示例

<?php

// Establish database connection
$mysqli = new mysqli('localhost', 'root', 'root', 'test');

// Prepare statement
$stmt = $mysqli->prepare('INSERT INTO users (name, age) VALUES (?, ?)');

// Bind variables
$name = 'one';
$age = 2;
$stmt->bind_param('si', $name, $age);

// Insert data with prepared statement
$stmt->execute();

// Check for errors
if ($mysqli->error) {
    echo 'Error: ' . $mysqli->error;
} else {
    // Data inserted successfully
}

// Prepare select statement
$stmt = $mysqli->prepare('SELECT * FROM users WHERE name = ?');

// Bind variable
$name = 'one';
$stmt->bind_param('s', $name);

// Execute select query
$stmt->execute();

// Fetch results
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo $row['id'] . ' - ' . $row['name'] . ' - ' . $row['age'] . '<br>';
}

// Close statement and connection
$stmt->close();
$mysqli->close();

?>

这个综合示例演示了从建立连接到使用准备好的语句插入和选择数据的整个过程,包括错误处理。

以上是为什么我的 MySQLi 准备语句抛出'在非对象上调用成员函数execute()”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn