简体   繁体   English

mysql插入查询的优化代码

[英]Optimized code for mysql insert query

Hello i am writing a module for inserting data in MySQL table. 您好,我正在编写一个用于在MySQL表中插入数据的模块。 It is very easy but in my module i am receiving four mobile number. 这很容易,但是在我的模块中,我收到了四个手机号码。 The first one is user's mobile no and other three are reference mobile number. 第一个是用户的手机号码,其他三个是参考手机号码。 User's mobile no is mandatory field but reference are not. 用户的手机号码不是必填字段,但参考不是。 this time i am checking each reference mobile no by using isset() and empty() function in PHP. 这次,我通过使用PHP中的isset()empty()函数来检查每个参考移动电话的编号。 but i have to write multiple if-else block. 但是我必须写多个if-else块。 like 喜欢

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)";

is there any optimized way to do this.so that it can reduce number of if-else block. 有没有优化的方法来做到这一点,以便它可以减少if-else块的数量。

empty already checks if a variable isset so this simplifies the if statments. empty已检查是否设置了变量,因此简化了if语句。

You can also use ternary conditions. 您也可以使用三元条件。 These look like: 这些看起来像:

$someCondition ? 'a' : 'b';

Which will evaluate to 'a' if $someCondition is true and 'b' otherwise. 如果$someCondition为true,则该值为“ a”,否则为“ b”。

Putting this together we can get: 综合起来,我们可以获得:

    //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;

As user1281385 pointed out in the comments you are using posted values directly in a query. 正如user1281385在注释中指出的那样,您正在直接在查询中使用发布的值。 You need to make sure these are sanitised or, better yet, use prepared statements. 您需要确保已将它们清理干净,或者最好使用准备好的语句。

Something like this perhaps: 大概是这样的:

$mobileno3 = (isset($_POST['mobileno_3']) && !empty($_POST['mobileno_3']))
    ? $_POST['mobileno_3']
    : 0;

You can even turn it into a function. 您甚至可以将其转换为功能。

function GetMobileNo($mobileNo)
{
    return (isset($mobileNo) && !empty($mobileNo)) ? $mobileNo : 0;
}

$mobileno3 = GetMobileNo($_POST['mobileno_3']);

sample/test code here http://codepad.org/5ybUcmcN 此处的示例/测试代码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 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM