2017-01-24 9 views
-2

私は、ユーザーがレコードをデータベースに挿入して編集できるようにするためのフォームを用意しています。更新クエリは正常に動作しますが、フォームのフィールドが空のままの場合その特定のフィールドの既存のデータをNULLまたは空白の値に置き換えて、既存のデータを置き換えます。条件付きでMySQLにデータを挿入

既存のレコードを一度に1フィールドずつ挿入できるようにフォームを設定するには、既存のレコードをNULLに置き換えますか?

これは私のHTML形式です:

<form action="saveprofile.php" method="post"> 
      <p class="text-muted"> 
       <input type="text" class="form-control"name="shortbio" id="shortbio" > 
      </p> 
      <hr> 
<textarea class="form-control" type="text" placeholder="Long Bio" name="longbio" id="longbio"></textarea> 
      </p> 
       <hr> 
<input type="text" class="form-control" name="location" id="location" > 

      </form> 

そして、私の更新クエリ:

$sql = "UPDATE profile SET 
shortbio='$shortbio',longbio='$longbio',location='$location' 
WHERE 
user_id=$user_id LIMIT 1"; 

私が埋めるときに私は、必要に満たされたそれぞれを設定していないので、更新クエリが今perfect.Butの作品フォームの1つのセクションで他のフィールドを空白のままにしておくと、データベーステーブルの既存のフィールドにある既存のレコードはnullに置き換えられます。

+0

あなたがいない 'NULL' /空の値をチェックして、条件付きで、彼らが存在する場合にのみ、それらを挿入することはできますか? – David

+0

はい、それは完璧な解決策です。しかし、私はそれを行う方法はわかりません。Im new to PHP/mysql –

+0

既存の値をフォームの値に戻すだけです。この方法では、データベースの値は同じデータに置き換えられます。 –

答えて

0

if/else条件でフォームの各入力値を確認する必要があります。その後、それに応じてデータベースクエリを生成/実行する必要があります。更新クエリの場合と同様に、値がHTML形式で与えられたこれらの列のみを選択します。値が指定されていない場合、更新クエリでこれらの列は選択されません。

$sql = "UPDATE profile SET "; 
if(!empty($_GET['shortbio'])){ 
     $shortbio = $_GET['shortbio'] ;  
     $sql .= "shortbio='$shortbio', "; 
} 

if(!empty($_GET['longbio'])){ 
     $longbio = $_GET['longbio'] ;  
     $sql .= "longbio='$longbio', "; 
} 

if(!empty($_GET['location'])){ 
     $location = $_GET['location'] ;  
     $sql .= "location='$location', "; 
} 
$sql = rtrim($sql, ','); //Remove additional comma 
$sql .= "WHERE user_id=$user_id LIMIT 1"; 
+0

この –

+0

のためにありがとう、ありがとう、このイ​​ンスタンスではあなたが示唆していると思います:if {shortbio = '$ shortbio' shortbio = '$ shortbio'}を設定すると、文法に苦しんでいます –

+0

@AngelaDutchan私はそれにコードを追加しました。 – Shujaat

0

ただ、このような形式のデータを再移植:

<?php 
    $sql= "select * from table"; 
    $result=mysqli_query($sql); 
    $row=mysqli_fetch_array($result); 
    ?> 


     <form action="saveprofile.php" method="post"> 
       <p class="text-muted"> 
        <input type="text" class="form-control"name="shortbio" id="shortbio" value="<?php echo $row['col_name']?>" > 
        </p> 
      </form> 
+0

素晴らしい...ありがとう@chetan S –

+1

htmlspecialchars –

+0

@chetan S.あなたのソリューションは完璧に働いた。ありがとう –