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:
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!