如何使用PHP更新数据库中的特定记录?

时间:2017-01-02 06:22:48

标签: php mysql sql-update

我有一个下拉列表是aMan,bMan,cMan。我从下拉列表中选择其中任何一个。所以无论我从下拉列表中选择什么,我都希望根据列表更新记录。以下更新查询正在更新我的所有记录,因为我为每个记录添加了“$ action_points”。

例如。如果我从下拉列表中选择了bMan,那么在更新表中将根据user_id仅更新bMan记录。如果我选​​择aMan然后更新表,它将仅更新aMan with 10.它不会对其他人产生影响。

我在更新查询时遇到问题。您能帮我更新查询吗?

$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);

更新表

enter image description here

4 个答案:

答案 0 :(得分:1)

您从选择下拉列表中选择它意味着它将传递该值,即您拥有aMan,bMan或cMan。

所以你可以这样做,

$action_type = $_GET['action_type'];

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

上面是一个例子。

答案 1 :(得分:1)

首先,您应该用if (isset($result -> num_rows) >0 )替换if(isset($result)) && ($result->num_rows>0))。第一个条件返回行数(至少为0),然后检查它是否已设置。因此,isset将始终返回true,即使未设置$result也是如此。第二个条件解决了这个问题

您要更新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);

这将自动更新所需的列

答案 2 :(得分:0)

你应该在你的查询中使用AND

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

或者使用多个更新查询,这意味着一旦更新aMan行然后查询bMan行等等。

答案 3 :(得分:0)

问题是因为您一次更新三列,您必须使其成为条件:

$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'";