首頁 >資料庫 >mysql教程 >為什麼我的 mysqli 準備語句會回傳「呼叫非物件上的成員函數execute()」?

為什麼我的 mysqli 準備語句會回傳「呼叫非物件上的成員函數execute()」?

DDD
DDD原創
2024-12-21 03:54:09483瀏覽

Why Does My mysqli Prepared Statement Return

使用 mysqli 預準備語句

在 mysqli 中使用預備語句時,在執行查詢之前正確綁定參數非常重要。

錯誤調試

提供的程式碼遇到錯誤“Call to a member functionexecute() on a non-object”,因為尚未執行參數綁定。根據 mysqli_prepare 文檔,在執行之前需要使用 mysqli_stmt_bind_param 綁定參數標記。

帶有錯誤處理的完整範例:

以下是一個更完整的範例,包括參數綁定、錯誤處理,並示範使用準備好的插入和取得資料語句:

<?php

// Establish database connection
$mysqli = new mysqli("localhost", "root", "root", "test");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit;
}

// Prepare insert statement
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
if (!$stmt) {
    echo "Error preparing statement: " . $mysqli->error;
    exit;
}

// Bind parameters and insert one row
$name = 'One';
$age = 1;
$stmt->bind_param('si', $name, $age);
$stmt->execute();
if ($stmt->errno) {
    echo "Error executing insert: " . $stmt->error;
    exit;
}

// Insert another row with different values
$name = 'Two';
$age = 2;
$stmt->bind_param('si', $name, $age);
$stmt->execute();
if ($stmt->errno) {
    echo "Error executing insert: " . $stmt->error;
    exit;
}

// Prepare select statement
$stmt = $mysqli->prepare("SELECT name, age FROM users");
if (!$stmt) {
    echo "Error preparing statement: " . $mysqli->error;
    exit;
}

// Execute select statement and fetch results
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "{$row['name']} is {$row['age']} years old<br>";
    }
}

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

此程式碼處理語句準備、執行和結果檢索期間的錯誤,提供更強大的預準備語句用法示範。

以上是為什麼我的 mysqli 準備語句會回傳「呼叫非物件上的成員函數execute()」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn