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
Lepaskan: 2024-12-25 15:15:16
asal
907 orang telah melayarinya

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);
Salin selepas log masuk

2. Perlaksanaan Kenyataan:

$stmt->execute();
Salin selepas log masuk

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();
Salin selepas log masuk

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();
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan