Rumah >pangkalan data >tutorial mysql >Bolehkah MySQLi Menyediakan Berbilang Pertanyaan dalam Satu Kenyataan?

Bolehkah MySQLi Menyediakan Berbilang Pertanyaan dalam Satu Kenyataan?

Barbara Streisand
Barbara Streisandasal
2024-10-29 02:41:30404semak imbas

Can MySQLi Prepare Multiple Queries in a Single Statement?

Bolehkah MySQLi Menyediakan Berbilang Pertanyaan dalam Satu Penyata?

Walaupun tidak mungkin untuk menyediakan berbilang pertanyaan dengan satu pernyataan MySQLi, penyelesaiannya wujud untuk mencapai kefungsian yang serupa.

Penyediaan Berbilang Pernyataan

Percubaan untuk menyediakan berbilang pertanyaan dalam satu pernyataan MySQLi akan mengakibatkan ralat. Sebagai alternatif, anda boleh mencipta berbilang pernyataan yang disediakan:

<code class="php">$stmt = $mysqli->prepare("SELECT * FROM users");
$stmt2 = $mysqli->prepare("INSERT INTO orders (user_id) VALUES (?)");</code>

Menggabungkan Penyata Disediakan

Untuk melaksanakan berbilang pertanyaan dengan cara terkawal, anda boleh menggabungkan pernyataan yang disediakan menggunakan transaksi:

<code class="php">mysqli->begin_transaction();
$stmt->execute();
$stmt2->execute();
mysqli->commit(); // Execute transaction</code>

Ini memastikan kedua-dua pertanyaan berjaya dilaksanakan atau tidak sama sekali.

Pengendalian Ralat

Jika mana-mana pernyataan yang disediakan gagal semasa pelaksanaan, transaksi akan berbalik dan tiada perubahan akan dibuat. Adalah penting untuk menyemak ralat selepas melaksanakan pernyataan yang disediakan:

<code class="php">if ($stmt->errno != 0) {
    echo "Error: " . $stmt->error;
}</code>

Petua Tambahan

Ralat "panggilan kepada fungsi ahli pada bukan objek" biasanya berlaku apabila kaedah prepare() gagal. Pastikan rentetan pertanyaan anda betul dari segi sintaksis sebelum meneruskan.

Atas ialah kandungan terperinci Bolehkah MySQLi Menyediakan Berbilang Pertanyaan dalam Satu Kenyataan?. 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