2013-12-10 10 views
0

我在我的系统中包含了error_reporting(E_ALL)。我想写一个更好的代码。 我想知道这两个选项。PHP - 在插入/更新之前声明每个变量,或者将每个变量插入/插入到引号中?

我应该在插入/更新(我有很多它)之前声明绝对所有变量?

$name = isset($_POST['name']) ? $_POST['name'] : ''; 
... 
$insert = $dbh->prepare('INSERT INTO table_name (name, ...) VALUES (?, ...)'); 
$insert->execute(array($name, ...)); 

或者我可以在insert/update中引用每个变量。

$name = $_POST['name']; 
... 
$insert = $dbh->prepare('INSERT INTO table_name (name, ...) VALUES (?, ...)'); 
$insert->execute(array("$name", ...)); 

当然了第二个选项我接收对未声明的变量的通知,但我保存的三元检查(I在每个变量的插入/更新加引号,但与三元相比,这是更小的负载的负载检查)。如果变量未声明,用这个引号插入空字符串。 在设置刚插入/更新的变量之后,我不会将其用于其他任何事情。

我想第一个选择更好,但有点慢。 我只是想要一个额外的意见。

+1

三元检查没有强加显着的性能损失,它总是很好地初始化变量。如果设置了POST变量,您可以随时设置默认值并覆盖。 – DevZer0

+0

如果您的ID必须填写,请首先检查您的数据库方案,不要以元组中的空值结束。 –

+0

我投票保留开放,因为用户正在询问如何通过error_reporting(E_ALL)消除错误。 –

回答

0

为什么当我们不需要时发送一个附加查询?

实际上,当你有没有$_POST['s_id']你不需要发送查询,这样你就可以像现在这样,你永远不会收到通知消息,您的查询将optimizied。

<?php 
if(isset($_POST['s_id'])) { //instead of $s_id = isset($_POST['s_id']) ? $_POST['s_id'] : ''; 
// your query code here 
} 
+2

例如,如果需要转换html实体,则三元检查可以用于编写较少的代码。 –

+0

同意你@LaurentWartel。用三元组我们不能置入条件+1的动作。 –

+0

当我havne't $ _POST ['名称/ s_id']我仍然需要发送查询。查询中有很多其他变量。 – user2871179