您好我正在编写一个用于在MySQL表中插入数据的模块。这很容易,但在我的模块中,我收到四个手机号码。第一个是用户的手机号码,其他三个是参考手机号码。用户的手机号码是必填字段,但参考号码不是。这次我在PHP中使用isset()
和empty()
函数来检查每个参考移动设备。
但我必须写多个if-else块。像
if(isset($_POST['mobileno_1']) && !empty($_POST['mobileno_1'])){
$mobileno1 = $_POST['mobileno_1'];
}else{
$mobileno1 = 0;
}
if(isset($_POST['mobileno_2']) && !empty($_POST['mobileno_2'])){
$mobileno2 = $_POST['mobileno_2'];
}else{
$mobileno2 = 0;
}
if(isset($_POST['mobileno_3']) && !empty($_POST['mobileno_3'])){
$mobileno3 = $_POST['mobileno_3'];
}else{
$mobileno3 = 0;
}
$sql = "INSERT INTO refferencemobile(mobileno, mobile1, mobile2, mobile3) VALUES($mobileno, $mobileno1, $mobileno2, $mobileno3)";
是否有任何优化的方法来执行此操作。因此它可以减少if-else块的数量。
答案 0 :(得分:2)
empty
已经检查了变量是否设置,因此这简化了if语句。
您也可以使用三元条件。这些看起来像:
$someCondition ? 'a' : 'b';
如果$someCondition
为真,则评估为'a',否则为'b'。
将这些放在一起我们可以得到:
//If $_POST['mobileno_1'] isset and has a non false value use $_POST['mobileno_1']
$mobileno1 = !empty($_POST['mobileno_1']) ? $_POST['mobileno_1'] : 0;
$mobileno2 = !empty($_POST['mobileno_2']) ? $_POST['mobileno_2'] : 0;
$mobileno3 = !empty($_POST['mobileno_3']) ? $_POST['mobileno_3'] : 0;
正如用户1281385在评论中指出的那样,您直接在查询中使用过帐值。您需要确保对它们进行消毒,或者更好地使用预先准备好的声明。
答案 1 :(得分:1)
或许这样的事情:
$mobileno3 = (isset($_POST['mobileno_3']) && !empty($_POST['mobileno_3']))
? $_POST['mobileno_3']
: 0;
你甚至可以把它变成一个功能。
function GetMobileNo($mobileNo)
{
return (isset($mobileNo) && !empty($mobileNo)) ? $mobileNo : 0;
}
$mobileno3 = GetMobileNo($_POST['mobileno_3']);
答案 2 :(得分:0)
此处的示例/测试代码http://codepad.org/5ybUcmcN
$mobileno1 = getMobileNo($_POST['mobileno_1']);
$mobileno2 = getMobileNo($_POST['mobileno_2']);
$mobileno3 = getMobileNo($_POST['mobileno_3']);
/* example
$mobileno1 = getMobileNo('abc');
$mobileno2 = getMobileNo('111');
$mobileno3 = getMobileNo('');
*/
$sql = "INSERT INTO refferencemobile(mobileno, mobile1, mobile2, mobile3) VALUES($mobileno, $mobileno1, $mobileno2, $mobileno3)";
function getMobileNo($mobileNo){
// check for if its set or not OR empty OR not an integer
if(!isset($mobileNo) || empty($mobileNo) || !is_int($mobileNo)){
return 0;
}
return $mobileNo; // valid number
}