为更新查询准备的语句
在 PHP 中,准备语句对于增强查询安全性和性能至关重要。准备好的语句允许参数化查询,其中使用占位符 (?) 而不是直接变量插入。
UPDATE 查询示例
考虑以下更新数据的 mysqli 查询在 Applicant 表中:
$db_usag->query("UPDATE Applicant SET phone_number ='$phone_number', street_name='$street_name', city='$city', county='$county', zip_code='$zip_code', day_date='$day_date', month_date='$month_date', year_date='$year_date' WHERE account_id='$account_id'");
要准备此语句,请将所有变量赋值替换为占位符:
<code class="php">$sql = "UPDATE Applicant SET phone_number=?, street_name=?, city=?, county=?, zip_code=?, day_date=?, month_date=?, year_date=? WHERE account_id=?";</code>
接下来,初始化准备好的语句对象:
<code class="php">$stmt = $db_usag->prepare($sql);</code>
使用bind_param()方法将参数绑定到语句。相应地指定参数的数据类型:
<code class="php">// Assuming the date and account_id parameters are integers `d` and the rest are strings `s` $stmt->bind_param('sssssdddd', $phone_number, $street_name, $city, $county, $zip_code, $day_date, $month_date, $year_date, $account_id);</code>
执行准备好的语句:
<code class="php">$stmt->execute();</code>
检查是否有错误:
<code class="php">if ($stmt->error) { echo "FAILURE!!! " . $stmt->error; }</code>
如果执行是成功,检索受影响的行数:
<code class="php">echo "Updated {$stmt->affected_rows} rows";</code>
最后,关闭statement对象:
<code class="php">$stmt->close();</code>
通过使用prepared statements,可以避免潜在的注入攻击,提高效率您的数据库查询。
以上是准备好的语句如何增强 PHP UPDATE 查询的安全性和性能?的详细内容。更多信息请关注PHP中文网其他相关文章!