Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Penyata Disediakan mysqli Saya Gagal, dan Bagaimana Saya Boleh Mengikat Parameter Dengan Betul?

Mengapa Penyata Disediakan mysqli Saya Gagal, dan Bagaimana Saya Boleh Mengikat Parameter Dengan Betul?

Barbara Streisand
Barbara Streisandasal
2024-12-12 20:04:16674semak imbas

Why Do My mysqli Prepared Statements Fail, and How Can I Properly Bind Parameters?

Menggunakan Penyata Disediakan mysqli

Bermula dengan Penyata Disediakan

Anda cuba untuk gunakan pernyataan yang disediakan, tetapi kod anda menghadapi ralat. Isu ini berpunca daripada langkah yang tiada: mengikat parameter pada pernyataan yang disediakan.

Parameter Pengikat

Pernyataan yang disediakan memerlukan anda mengikat parameter sebelum melaksanakan. Proses ini mengaitkan pembolehubah luaran dengan ruang letak (?) dalam pertanyaan SQL.

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

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

// Bind parameters (typehint: string, integer)
$stmt->bind_param('si', $name, $age);

// Now you can execute
$stmt->execute();

Adakah saya Memerlukan mysqli untuk Penyata Disediakan?

Ya, mysqli diperlukan untuk kenyataan yang disediakan.

Lengkap Contoh

Sambungan:

$mysqli = new mysqli("localhost", "root", "root", "test");
if ($mysqli->connect_errno) {
    echo "Connection failed: " . $mysqli->connect_error;
}

Sisipan:

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

// Bind parameters (typehint: string, integer)
$stmt->bind_param('si', $name, $age);

// Insert row
$stmt->execute();

Pilihan dengan Ralat Pengendalian:

$stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?");
$stmt->bind_param('s', $name);

$stmt->execute();

if ($stmt->errno) {
    echo "Error: " . $stmt->error;
} else {
    $result = $stmt->get_result();
}

// Process result

Atas ialah kandungan terperinci Mengapa Penyata Disediakan mysqli Saya Gagal, dan Bagaimana Saya Boleh Mengikat Parameter Dengan Betul?. 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