-1

メールアドレスが見つかったかどうかに応じてデータベースの天気を更新または挿入するように指示する以下の関数がありますが、これは正常に機能しますが$POSTid

ステートメントに対して、if($emailCheck != FALSE)別のステートメントを実行し、その中にinsert設定できることがわかりました。id

私の質問は、ステートメントの新しいinsert情報に対してこれをどのように達成できるかということです。else

挿入機能:

function Insert()
{
  $emailCheck = $this->checkEmail($email);

  if($emailCheck != FALSE)
  {
    updateQuery by $emailCheck['id'])); // The email address is found so we update the data

  }else{

    Jojo::insertQuery; // The email address is not found so we insert the new row
  }
}

チェック機能:

function checkEmail($email)
{
     $email = $POST['Email'];

    if($email)
    {
        $candemail = selectRow("SELECT * FROM {table} WHERE email=?",$email);

        if(isset($candemail['email']))
        {
            return $candemail;
        } else {
            return FALSE;
        }
    }
}

全機能:

  function candidateInsert($fields, $candiatefilename,$jobid)
    {
      $emailCheck = Jojo_Plugin_name_jobs_apply::checkCandidateEmail($email);

      if($emailCheck != FALSE)
      {
        //Jojo::updateQuery("UPDATE {db} SET first_name=?,last_name=?,home_phone=?,work_phone=?,mobile_phone=?,email=?,skype=?,contact_method=?,location=?,location_other=?,cv_path=? WHERE id=?", array($fields['FirstName'],$fields['LastName'],$fields['HomePhone'],$fields['WorkPhone'],$fields['MobilePhone'],$fields['Email'],$fields['Skype'],$fields['ContactMethod'],$fields['Location'],$fields['LocationOther'],$candiatefilename, $emailCheck['id']));
        //Jojo::insertQuery("INSERT INTO {refocus_candidate_job} SET candidateID=?,jobID=?,appliedDate=?", array($emailCheck['id'],$jobid,date("d/m/y")));
    }else{
        Jojo::insertQuery("INSERT INTO {db} SET first_name=?,last_name=?,home_phone=?,work_phone=?,mobile_phone=?,email=?,skype=?,contact_method=?,location=?,location_other=?,cv_path=?", array($fields['FirstName'],$fields['LastName'],$fields['HomePhone'],$fields['WorkPhone'],$fields['MobilePhone'],$fields['Email'],$fields['Skype'],$fields['ContactMethod'],$fields['Location'],$fields['LocationOther'],$candiatefilename));

        $id = Jojo::insertQuery;

        //Jojo::insertQuery("INSERT INTO {db_candidate_job} SET candidateID=?,jobID=?,appliedDate=?", array($id,$jobid,date("d/m/y")));

        }
    }
4

2 に答える 2

1

elseステートメントで次の順序でコードを実行してみてください。

初め

$id = Jojo::insertQuery("INSERT INTO {db} SET first_name=?,last_name=?,home_phone=?,work_phone=?,mobile_phone=?,email=?,skype=?,contact_method=?,location=?,location_other=?,cv_path=?", array($fields['FirstName'],$fields['LastName'],$fields['HomePhone'],$fields['WorkPhone'],$fields['MobilePhone'],$fields['Email'],$fields['Skype'],$fields['ContactMethod'],$fields['Location'],$fields['LocationOther'],$candiatefilename));

2番

Jojo::insertQuery("INSERT INTO {db_candidate_job} SET candidateID=?,jobID=?,appliedDate=?", array($id,$jobid,date("d/m/y")));
于 2012-09-20T07:36:54.190 に答える
1

Jojoのドキュメントに記載されています。新しく挿入された行のIDを取得する場合は、次を使用します。

function Insert()
{
  $emailCheck = $this->checkEmail($email);

  if($emailCheck != FALSE)
  {
    updateQuery by $emailCheck['id'])); // The email address is found so we update the data
    $id = $emailCheck['id'];
  }else{

    $id = Jojo::insertQuery; // The email address is not found so we insert the new row
  }
  //at this point $id holds the id of the row.
}

次に、if / elseステートメントの後で、どちらの場合でも(INSERT / UPDATE)、行のIDがあることを認識して、2番目のテーブルでコードを実行できます。

于 2012-09-20T05:28:39.470 に答える