2017-01-02 7 views
1

私はドロップダウンが1つあり、リストはaMan、bMan、cManです。ドロップダウンからいずれか1つを選択しています。だから私がドロップダウンから選択しているものは、リストに従ってそのレコードを更新したい。下の更新クエリは、それぞれに '$ action_points'を追加したため、すべてのレコードを更新しています。PHPを使用してデータベース内の特定のレコードを更新するには?

たとえば、 bManをドロップダウンから選択した場合、updateテーブルはuser_idに従ってbManレコードのみを更新します.Manを選択してテーブルを更新すると、aManのみが更新されます。これは他に影響しません。

更新クエリで問題が発生しました。更新クエリを手伝ってください。

$result = $conn->query($sql_user); 
if (isset($result->num_rows) > 0) { 
// output data of each row 
    while($row = $result->fetch_assoc()) { 
    $action_type=$row['action_type'];// Value will be aMan,bMan, cMan 
    $action_points=$row['action_points']; //10, 20, 30  
    } 
    } 
$sql = "UPDATE man SET aMan='$action_points',bMan='$action_points', cMan='$action_points' where user_id='$user_id'"; 
$result = $conn->query($sql); 

更新テーブルUが使用する

enter image description here

答えて

1

選択ドロップダウンから選択すると、aMan、bManまたはcManのいずれかの値を渡すことを意味します。

ので、あなたは

$action_type = $_GET['action_type']; 

$sql = "update man set `$action_type` = '$action_value' where id = $user_id"; 

は、上記の例で、このようにそれを行うことができます。

+0

返信ありがとうMr.Abhishek.I $ action_typeから一重引用符を削除しています。働いています。助けてくれてありがとうございます。私の側からアップしてください –

+0

喜んで助けてくれました! –

0

とあなたのクエリ

UPDATE man SET aMan='$action_points' AND bMan='$action_points' AND cMan='$action_points' where user_id='$user_id'" 

または複数の更新クエリを使用するには一旦bMan行のクエリをアマンの行を更新し、意味そうです。

+0

感謝を更新するものとします。上記のクエリは私のために働いています。 –

0

問題は、一度に3列を更新しているので、あなたはそれが条件のようにする必要があります:

$action_type=$row['action_type'];// Value will be aMan,bMan, cMan 
$action_points=$row['action_points']; //10, 20, 30  

$column = ''; 
if($action_type == 'aMan'){ 
    $column = 'aMan'; 
} 
else if($action_type == 'bMan'){ 
    $column = 'bMan'; 
} 
else if($action_type == 'cMan'){ 
    $column = 'cMan'; 
} 

$sql = "UPDATE man SET ".$column." = '".$action_points."' where user_id='$user_id'"; 
1

まず、あなたがif(isset($result)) && ($result->num_rows>0))if (isset($result -> num_rows) >0)を交換する必要があります【選択最初の条件は、行の数を返します。 (少なくとも0である)、それが設定されているかどうかを確認します。したがって、issetは、$resultが設定されていなくても常にtrueを返します。 2番目の条件はこの問題を解決します

更新するリストのtypeがあります。使用しないでください。例えばのために

$result = $conn->query($sql_user); 
if(isset($result)) && ($result->num_rows>0)) { 
// output data of each row 
    while($row = $result->fetch_assoc()) { 
    $action_type=$row['action_type'];// Value will be aMan,bMan, cMan 
    $action_points=$row['action_points']; //10, 20, 30  
    } 
    } 
$sql = "UPDATE man SET $action_type = $action_points WHERE user_id='$user_id'"; 
$result = $conn->query($sql); 

これは、自動的に必要な列に返信Mr.arashため

+0

返信ありがとうMr.Fabulous。あなたの問い合わせは簡単で簡単です –

+0

また、if(isset($ result))&&($ result-> num_rows>と ' 0)) '。最初の条件は行の数を返します(少なくとも0です)。それが設定されているかどうかを確認します。したがって、 'isset'は' $ result'がセットされていなくても常に 'true'を返します。 seconf条件はこの問題を解決します – Fabulous

+0

これを追加するために私の質問を編集します – Fabulous

関連する問題