PHP插入数据库检查错误

时间:2011-07-13 16:47:35

标签: php postgresql

嗨,我正在做一个学习php的小项目,我写了一些函数:

在这段代码中,我基本上检查了我的表单中的所有字段,并将哈希值中的值从false更改为true,如果它们被填入,最后我循环哈希,并添加键(这是错误)如果数值为false,则为数组。

function testBabysitterForAllElements(){
         global $db;
         $errorArray;

         $naamarray["naam"]=false;
         $naamarray["voornaam"]=false;
         $naamarray["adres"]=false;
         $naamarray["woonplaats"]=false;
         $naamarray["postcode"]=false;
         $naamarray["telefoonnummer"]=false;
         $naamarray["geboortedatum"]=false;
         $naamarray["adres"]=false;
         $naamarray["wachtwoord"]=false;
         $naamarray["email"]=false;

         if(isset($_POST['element_1'])){
            $naamarray["naam"]=true;        
         }

         if(isset($_POST['element_2'])){
            $naamarray["voornaam"]=true;        
         }

         if(isset($_POST['element_3'])){
            $naamarray["adres"]=true;       
         }

         if(isset($_POST['element_4'])){
            $naamarray["woonplaats"]=true;      
         }


         if(isset($_POST['element_5'])){
            $naamarray["postcode"]=true;        
         }

         if(isset($_POST['element_6'])){
            $naamarray["telefoonnummer"]=true;      
         }

         if(isset($_POST['element_7'])){
            $naamarray["email"]=true;       
            connectToDB();
            $sql='SELECT inlognaam FROM  kauffman.login WHERE inlognaam like \''.$_POST['element_7'].'\';';
            $rows=$db->queryRow($sql);
            if($rows){
                array_push($errorArray,"email adres is reeds geregistreerd.");
            }
         }


         if(isset($_POST['element_8_1']) && isset($_POST['element_8_2']) && isset($_POST['element_8_3'])){
            $naamarray["geboortedatum"]=true;       
         }

         if(isset($_POST['element_10']) && isset($_POST['element_10_1'])){
            $naamarray['wachtwoord']=true;
         }


         foreach($naamarray as $key => $value){
                if($value == false){
                    array_push($errorArray,$key);
                }
         }

         if(!empty($errorArray)){return $errorArray;}

    }

这里我将字段添加到数据库中,它调用上一个函数来检查是否填写了所有字段。

    function babysitterToevoegenAanDB(){

    global $db;
    if(isset($_POST['submit'])){

        $errorArray=testBabysitterForAllElements();
        echo $errorArray;
    $succes=('succesvol toegevoegd');
        $result;
        if(!empty($errorArray)){
            connectToDB();

            $sql = "INSERT into kauffman.login(inlognaam,functie,paswoord) VALUES ('".antiInjectie($_POST['element_7'])."','gezin','".pwHashGenerator(antiInjectie($_POST['element_10_1']))."');";
            $sql2 = 'SELECT serialKey from kauffman.login WHERE inlognaam='.antiInjectie($_POST['element_7']).';'  ;

            $result= $succes;
        }else{
            $result= $errorArray;
        }
        echo $result;
    }
}

在这里,我创建了具有babysitterToevoegenAanDB()功能的表单。返回此表单和表单,可以在页面上调用。

function babysitterForm(){
    return  babysitterToevoegenAanDB().'        <form id="babysitForm" class="appnitro"  method="post" action="'.htmlentities($_SERVER['PHP_SELF']).'">
                    <div class="form_description">
            <h2>Babysitter</h2>
            <p>Gelieve je hier in te schrijven als babysitter</p>
        </div>                      
            <ul >

                    <li id="li_1" >
        <label class="description" for="element_1">Naam </label>
        <div>
              <input id="element_1" name="element_1" class="element text medium" type="text" maxlength="255" value="'.
    ((isset($_POST['element_1']))? htmlentities($_POST['element_1']):'')
    . '"/>
        </div><p class="guidelines" id="guide_1"><small>Voer uw naam in.</small></p> 
        </li>       <li id="li_2" >
        <label class="description" for="element_2">Voornaam </label>
        <div>
            <input id="element_2" name="element_2" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_2']))? htmlentities($_POST['element_2']):'').'"/> 
        </div><p class="guidelines" id="guide_2"><small>Vul uw voornaam in.</small></p> 
        </li>       <li id="li_3" >
        <label class="description" for="element_3">Adres </label>
        <div>
            <input id="element_3" name="element_3" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_3']))? htmlentities($_POST['element_3']):'').'"/> 
        </div><p class="guidelines" id="guide_3"><small>vul uw straat en huisnummer in.</small></p> 
        </li>       <li id="li_4" >
        <label class="description" for="element_4">Woonplaats </label>
        <div>
            <input id="element_4" name="element_4" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_4']))? htmlentities($_POST['element_4']):'').'"/> 
        </div><p class="guidelines" id="guide_4"><small>vul uw woonplaats in.</small></p> 
        </li>       <li id="li_5" >
        <label class="description" for="element_5">Postcode </label>
        <div>
            <input id="element_5" name="element_5" class="element text small" type="text" maxlength="255" value="'.((isset($_POST['element_5']))? htmlentities($_POST['element_5']):'').'"/> 
        </div><p class="guidelines" id="guide_5"><small>Vul uw Postcode hier in</small></p> 
        </li>       <li id="li_6" >
        <label class="description" for="element_6">telefoonnummer </label>
        <div>
            <input id="element_6" name="element_6" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_6']))? htmlentities($_POST['element_6']):'').'"/> 
        </div><p class="guidelines" id="guide_6"><small>Vul uw telefoonnummer in.</small></p> 
        </li>       <li id="li_7" >
        <label class="description" for="element_7">email </label>
        <div>
            <input id="element_7" name="element_7" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_7']))? htmlentities($_POST['element_7']):'').'"/> 
        </div><p class="guidelines" id="guide_7"><small>vul uw email in.</small></p> 
        </li>       <li id="li_8" >
        <label class="description" >Geboortedatum </label>
        <span>
            <input id="element_8_1" name="element_8_1" class="element text" size="2" maxlength="2" value="'.((isset($_POST['element_8_1']))? htmlentities($_POST['element_8_1']):'').'" type="text"> /
            <label for="element_8_1">MM</label>
        </span>
        <span>
            <input id="element_8_2" name="element_8_2" class="element text" size="2" maxlength="2" value="'.((isset($_POST['element_8_2']))? htmlentities($_POST['element_8_2']):'').'" type="text"> /
            <label for="element_8_2">DD</label>
        </span>
        <span>
            <input id="element_8_3" name="element_8_3" class="element text" size="4" maxlength="4" value="'.((isset($_POST['element_8_3']))? htmlentities($_POST['element_8_3']):'').'" type="text">
            <label for="element_8_3">YYYY</label>
        </span>

        <li id="li_10" >
        <label class="description" for="element_10">Wachtwoord </label>
        <div>
            <input id="element_10" name="element_10" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_10']))? htmlentities($_POST['element_10']):'').'"/> 
            <input id="element_10_1" name="element_10_1" class="element text medium" type="text" maxlength="255" value="'.((isset($_POST['element_10_1']))? htmlentities($_POST['element_10_1']):'').'"/> 
        </div><p class="guidelines" id="guide_10"><small>Vul uw wachtwoord twee maal in. Hierdoor voorkomt men typfouten door validatie.</small></p> 
        </li>       



            <li id="li_9" >
        <label class="description" for="element_9">Opmerkingen </label>
        <div>
            <textarea id="element_9" name="element_9" class="element textarea medium" ></textarea> 
        </div> 
        </li>

                    <li class="buttons">
                <input type="hidden" name="form_id" value="206335" />

                <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" />
        </li>
            </ul>
        </form> ';
}

基本上是:

  1. 我调用最后一个显示要应用的表单的函数babysitteForm
  2. BabysitterForm包含babySitterToevoegenAanDB函数,用于检查是否设置了提交
  3. 如果是这样,它会检查所有字段,如果有错误,则必须返回错误的数组
  4. 但是,如果我点击提交而不填写任何内容,则没有任何内容添加到errorArray中。

1 个答案:

答案 0 :(得分:2)

通常没有任何东西被添加到你的错误数组中。 函数isset($ _ POST ['anything'])仅检查是否在post var中设置了该字段。

post var由您的表单填写。

基本上,如果您的表单包含7个输入字段,则所有这些输入字段的值将被放入 $ _ POST。

$ _POST var的打印类似于:

print_r($_POST);

结果:

array('element_1'=>'','element_2'=>'' ... 

所以你的isset函数会检查是否设置了'element_x'值,它是什么,它什么都不包含。

你需要重新编写支票,以便检查内容,而不是存在。 Isset只是 检查f.e.时使用$ _GET vars如果你不确定它们是否被设置而不是在表格中发布变量(因为这些将永远被设置)。

我建议以以下形式重新编写支票:

     $naamarray["naam"]=true;
     $naamarray["voornaam"]=true;
     $naamarray["adres"]=true;
     $naamarray["woonplaats"]=true;
     $naamarray["postcode"]=true;
     $naamarray["telefoonnummer"]=true;
     $naamarray["geboortedatum"]=true;
     $naamarray["adres"]=true;
     $naamarray["wachtwoord"]=true;
     $naamarray["email"]=true;


     if($_POST['element_1'] == ""){
            $naamarray["naam"]=false;        
     }

为您的所有支票执行此操作。 也扭转你的foreach循环:

foreach($naamarray as $key => $value){
            if($value == true){
                array_push($errorArray,$key);
            }
     }

我对表单前面的函数返回也有一些疑问。我认为它更清楚 创建一个函数,只包括PHP页面而不是这个。

然后你会得到如下代码:

require_once('inc/functions.php');
if ($_SERVER['REQUEST_METHOD'] == "POST") {
  babysitterToevoegenAanDB();
} else {
  babysitterForm();
}

最后一个提示:给你的输入字段清楚的名字,而不仅仅是element_x ......。