Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat 'Ralat maut: Panggilan ke fungsi ahli laksanakan() pada bukan objek' Apabila Menggunakan Penyata Disediakan Mysqli?

Mengapa Saya Mendapat 'Ralat maut: Panggilan ke fungsi ahli laksanakan() pada bukan objek' Apabila Menggunakan Penyata Disediakan Mysqli?

Linda Hamilton
Linda Hamiltonasal
2024-12-25 15:15:16915semak imbas

Why Am I Getting

Kesalahan dalam Menggunakan Penyata Disediakan Mysqli

Dalam percubaan untuk menggunakan kenyataan yang disediakan, pembangun menghadapi cabaran dan menerima ralat "Ralat maut: Panggilan ke fungsi ahli laksanakan () pada bukan objek." Artikel ini menyelidiki punca isu ini dan menyediakan panduan komprehensif tentang penggunaan penyataan yang disediakan dengan betul dalam Mysqli.

Asal Ralat

Isu timbul daripada peninggalan pengikatan parameter sebelum melaksanakan kenyataan yang disediakan. Mysqli memerlukan pengikatan parameter kepada pembolehubah aplikasi melalui fungsi mysqli_stmt_bind_param() sebelum melaksanakan pernyataan.

Melaksanakan Penyata Disediakan

1. Pengikatan Parameter:

$name = 'one';
$age  = 1;

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");

// bind parameters. Refer to documentation for appropriate data types (e.g., 'si' for string and integer).
$stmt->bind_param('si', $name, $age);

2. Perlaksanaan Kenyataan:

$stmt->execute();

3. Pengikatan dan Perlaksanaan Parameter Seterusnya:

Untuk memasukkan berbilang baris dengan nilai yang berbeza, langkah pengikatan parameter mesti diulang sebelum setiap pelaksanaan.

Contoh:

$name = 'two';
$age  = 2;

// Update bound parameters
$stmt->bind_param('si', $name, $age);

// Execute with different values
$stmt->execute();

4. Contoh Lengkap:

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

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
try {
    // Insert one row
    $name = 'one';
    $age  = 1;
    $stmt->bind_param('si', $name, $age);
    $stmt->execute();

    // Insert another row with different values
    $name = 'two';
    $age  = 2;
    $stmt->bind_param('si', $name, $age);
    $stmt->execute();
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat maut: Panggilan ke fungsi ahli laksanakan() pada bukan objek' Apabila Menggunakan Penyata Disediakan Mysqli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn