首頁 >後端開發 >php教程 >為什麼我的 MySQLi 準備語句會拋出「在非物件上呼叫成員函數execute()」錯誤?

為什麼我的 MySQLi 準備語句會拋出「在非物件上呼叫成員函數execute()」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-09 18:07:15171瀏覽

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