2017-01-12 17 views
1

voornaam en familienaamの欄にvolledige_naamという列をまとめたいと思います。 しかし、私はまた、フィールドをvoornaam en familienaamのデータベースに保存したいと思っています。PHPで2つのフォームバーをマージする

私はif機能で回避しようとしましたが、エラーが発生しています。

誰かがこれについてどうやったらいいのでしょうか?

mysqlテーブル作成スクリプト。

function CreateTable() 
{ 
    $qry = "Create Table $this->tablename (". 
     "id_user INT NOT NULL AUTO_INCREMENT ,". 
     "volledige_naam VARCHAR(128) NOT NULL ,". 
     "voornaam VARCHAR(128) NOT NULL ,". 
     "familienaam VARCHAR(128) NOT NULL ,". 
     "adres VARCHAR(128) NOT NULL ,". 
     "postcode VARCHAR(128) NOT NULL ,". 
     "gemeente VARCHAR(128) NOT NULL ,". 
     "dob VARCHAR(128) NOT NULL ,". 
     "tele VARCHAR(128) NOT NULL ,". 
     "email VARCHAR(64) NOT NULL ,". 
     "username VARCHAR(16) NOT NULL ,". 
     "password VARCHAR(32) NOT NULL ,". 
     "confirmcode VARCHAR(32) ,". 
     "PRIMARY KEY (id_user)". 
     ")"; 

    if(!mysql_query($qry,$this->connection)) 
    { 
     $this->HandleDBError("Error creating the table \nquery was\n $qry"); 
     return false; 
    } 
    return true; 
} 

入力スクリプトのコレクション

function CollectRegistrationSubmission(&$formvars) 
    { 
     $formvars['voornaam'] = $this->Sanitize($_POST['voornaam']); 
     $formvars['familienaam'] = $this->Sanitize($_POST['familienaam']); 

mysqlのスクリプトに挿入します。

function InsertIntoDB(&$formvars) 
{ 

    $confirmcode = $this->MakeConfirmationMd5($formvars['email']); 

    $formvars['confirmcode'] = $confirmcode; 

    $insert_query = 'insert into '.$this->tablename.'(
      volledige_naam, 
      voornaam, 
      familienaam, 
      adres, 
      postcode, 
      gemeente, 
      dob, 
      tele, 
      email, 
      username, 
      password, 
      confirmcode 
      ) 
      values 
      (
      "' . $this->SanitizeForSQL($formvars['volledige_naam']) . '", 
      "' . $this->SanitizeForSQL($formvars['voornaam']) . '", 
      "' . $this->SanitizeForSQL($formvars['familienaam']) . '", 
      "' . $this->SanitizeForSQL($formvars['adres']) . '", 
      "' . $this->SanitizeForSQL($formvars['postcode']) . '", 
      "' . $this->SanitizeForSQL($formvars['gemeente']) . '", 
      "' . $this->SanitizeForSQL($formvars['dob']) . '", 
      "' . $this->SanitizeForSQL($formvars['tele']) . '", 
      "' . $this->SanitizeForSQL($formvars['email']) . '", 
      "' . $this->SanitizeForSQL($formvars['username']) . '", 
      "' . md5($formvars['password']) . '", 
      "' . $confirmcode . '" 
      )'; 
    if(!mysql_query($insert_query ,$this->connection)) 
    { 
     $this->HandleDBError("Error inserting data to the table\nquery:$insert_query"); 
     return false; 
    } 
    return true; 
+4

これらのmysql_ *関数の使用をやめる必要があります。彼らは今6年間非難されています。 PDOは10年以上にわたって存在しています。 – miken32

+0

重複したデータをデータベースに格納することは理想的ではありません。 PHPを使用する際、それらを分離して結合しないでください。また、選択したクエリから既に参加させることもできます。それはあなたが欲しいものですか? – sidyll

+0

検索のためにデータを複製する必要があります。私はどうやって一緒に得るのか分かりません。 – WouterS

答えて

0

次の2つの列にあなたの記録を保持し、以降のクエリでPHPまたは で簡単に参加できます。しかし、それを別の列に保存する場合は、 と入力して、挿入クエリを実行してください。あなたが 何かを使用することができ、あなたのSELECTクエリで、唯一の分離あなたがそれらを格納することで選択した場合

$formvars['voornaam'] . ' ' . $formvars['familienaam'] 

:ちょうど入社VARSを渡し、代わりに自分の形で存在しないだろう ある$formvars['volledige_naam'])を渡すの1行、 を変更

SELECT CONCAT_WS(' ', voornaam, familienaam) AS volledige_naam FROM gebruikers 

それとも、それらを個別に取得し、 同様のアプローチでPHPでそれらを結合することができます:単一 列に両方の名前を取得するには、次のように。また、コメントに記載されているように、 PHP DataObjects、略してPDOを使用する必要があります。古いmysql_関数は、古くから推奨されていた です。

関連する問題