Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyelesaikan Susunan Parameter yang Salah dalam Kemas Kini Pangkalan Data Penyata Disediakan PHP?

Bagaimana untuk Menyelesaikan Susunan Parameter yang Salah dalam Kemas Kini Pangkalan Data Penyata Disediakan PHP?

DDD
DDDasal
2024-10-21 20:06:29775semak imbas

How to Resolve Incorrect Parameter Order in PHP Prepared Statement Database Updates?

Penyata Disediakan PHP untuk Kemas Kini Pangkalan Data

Perbincangan ini tertumpu pada penggunaan penyataan yang disediakan dengan betul dalam PHP untuk mengelakkan kelemahan seperti suntikan SQL. Tujuan blok kod yang dimaksudkan adalah untuk mengemas kini jadual pangkalan data dengan satu medan menggunakan pernyataan yang disediakan.

Dalam kod yang disediakan, kaedah kemas kini() dalam fail class.Scripts.inc menggunakan fail yang disediakan pernyataan dalam percubaan untuk mengemas kini jadual datadump. Walau bagaimanapun, pelaksanaan tidak berjaya disebabkan oleh susunan parameter yang salah semasa kaedah bind_param(). Kod semasa mengikat parameter dalam susunan $id dan $content, manakala pernyataan SQL menjangkakannya dalam susunan yang bertentangan, yang membawa kepada pengenalan rekod yang salah dan baris sifar terjejas.

Kod yang diperbetulkan di bawah membetulkannya. ralat dengan mengikat parameter dalam susunan yang betul dan menyediakan pengendalian ralat tambahan:

<code class="php">$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?");
/* Always check whether the prepare() succeeded */
if ($stmt === false) {
    trigger_error($this->mysqli->error, E_USER_ERROR);
    return;
}

$id = 1;
/* Bind our params */
/* Bind variables in the same order as SQL params */
$stmt->bind_param('si', $content, $id);

/* Set our params */
/* No escaping needed when using prepared statements */
$content = $_POST['content'] ?: '';

/* Execute the prepared Statement */
$status = $stmt->execute();
/* Always check whether the execute() succeeded */
if ($status === false) {
    trigger_error($stmt->error, E_USER_ERROR);
}

printf("%d Row inserted.\n", $stmt->affected_rows);</code>

Mengenai pertanyaan khusus anda:

  1. Mesej "0 Rows Inserted" yang anda temui adalah disebabkan oleh susunan parameter terbalik. Parameter id dan kandungan diikat dalam susunan yang salah, menyebabkan klausa WHERE tidak sepadan dengan baris.
  2. Apabila mengemas kini jadual, ia boleh diterima untuk mengubah suai hanya medan yang anda perlukan. Lajur lain dalam jadual akan kekal tidak berubah.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Susunan Parameter yang Salah dalam Kemas Kini Pangkalan Data Penyata Disediakan PHP?. 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