PHP执行SQL空白数据库条目

时间:2016-06-06 21:20:25

标签: php sql json

所以我有一个php脚本,它与api集成,可以从json结果中删除信息。该工具对所有位于特定状态的配置文件执行搜索查询,然后保存所有返回的链接并开始循环遍历它们并一次执行一个以查看内部数据并检索所需数据。在这个过程结束时,我试图将结果写入我的数据库。说我收集$ firstname和$ lastname,当工具运行时我注意到它从未错过任何信息,但通常它会在数据库中写入条目,重复信息可能只是$ firstname而不是$ lastname。当它执行此操作时,它将两次写入该条目,一次包含所有信息,另一次只包含部分信息。考虑到它始终无论收集什么我需要我尝试找出if或else语句或其他类型的触发器所以在它写入我的表之前,php脚本将检查以确保所有可用的字段充满了信息。如果它们是写的,如果不是它就什么都不做。

这是我到目前为止所拥有的......

       if($firstname = ""){
       echo ""; }
       else {
       $sql_S = "INSERT INTO records (firstname, lastname, email, phone, duns, cage, expirationdate, businessname, address, city, state, zip, naics) VALUES ('{$firstname}','{$lastname}','{$email}','{$phone}','{$duns}','{$cage}','{$expirationDate}','{$businessName}','{$samAddress}','{$samCity}','{$samState}','{$samZip}','{$naics_num}')";
       $res_CE = mysql_query($sql_S);   
                        }

它似乎无法正常工作,而且我无法检查多个字段,例如$ firstname,$ lastname。

非常感谢任何输入。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

这里有一些解决方案。

很多if&#39>

if($firstname == "" || $lastname == "") echo "error"; ...

伪验证器:

foreach(['firstname', 'lastname'] as $var) {
    if ($$var == "") echo "error"; ...
}

包含规则的课程:

$rules = ['firstname' => 'notEmpty', 'lastname' => 'notEmpty'];
$validator = new Validator($rules);

$myObj->firstname = $firstname;
$myObj->lastname = $lastname;
...

try {
    $validator->validate($myObj);
} ...

class Validator {

    protected $rules;
    protected $errors;

    public function __construct($rules) {
        $this->rules = $rules;
    }

    public function validate($obj) {
        $this->errors = [];
        $vars = get_object_vars($obj);
        foreach($this->rules as $attr => $arrayOfRules) {
            $rule = explode("|", $arrayOfRules);
            foreach($rule as $r) {
                switch($r) {
                    case "notEmpty":
                        if($this->ruleNotEmpty($vars[$attr])) {
                            $this->errors['notEmpty'][] = $attr;
                        }
                        break;
                    default:
                        break;
                }
            }
        }
        if(count($this->errors)) {
            //@TODO return all errors with messages here
            throw new Exception("Errors found");
        }
        return true;
    }

    protected function ruleNotEmpty($data) {
        return $data != "";
    }
}

这是一种方法。有很多框架和组件已经做了一些验证,但这是一个方向。