我在系统中包含了error_reporting(E_ALL)。我想写一个更好的代码。我想知道这两种选择。
我应该在插入/更新之前声明所有变量吗(我有很多)?
$name = isset($_POST['name']) ? $_POST['name'] : '';
...
$insert = $dbh->prepare('INSERT INTO table_name (name, ...) VALUES (?, ...)');
$insert->execute(array($name, ...));
或者我可以引用插入/更新中的每个变量。
$name = $_POST['name'];
...
$insert = $dbh->prepare('INSERT INTO table_name (name, ...) VALUES (?, ...)');
$insert->execute(array("$name", ...));
当然,在第二个选项中,我会收到未声明变量的通知,但我会为三元检查保存负载(我在插入/更新每个变量时添加引号,但与三元检查相比,这是较小的负载)。如果变量未声明,则使用此引号插入空字符串。在设置了我只是插入/更新的变量之后,我不会将其用于其他任何事情。
我想第一个选项比较好,但有点慢。我只是想补充一点意见。
当我们不需要的时候,为什么要发送一个常规查询
实际上,当你没有$_POST['s_id']
时,你不需要发送查询,所以你可以这样做,你永远不会收到通知消息,你的查询会被优化。
<?php
if(isset($_POST['s_id'])) { //instead of $s_id = isset($_POST['s_id']) ? $_POST['s_id'] : '';
// your query code here
}