提交具有相同输入字段的表单(与上次相同)时,如何在数据库中增加值

时间:2018-09-22 14:23:22

标签: php database mysqli

当用户在输入字段中提交相同值时,我希望一个值(而不是id值BTW)增加。

例如,假设该值位于db表的“ number”列中,并且每次用户提交带有let的表单时,假设在输入字段中使用“ hello”,则“ number”列中的整数值将增加一个特定值。

2 个答案:

答案 0 :(得分:0)

此任务必须使用触发功能,因为在表中可能只有一个自动增量键

如果您使用postgres,则可以使用

create or replace function increment_version() returns trigger as $$
declare 
    new_version integer;
begin
    select max(version) into new_version from YOU_TABLE_NAME where CONDITIONS_YOU_NEED;
    new.version = new_version + 1;
    return new;

create trigger increment_version after insert on YOUR_TABLE_NAME
for each row execute increment_version();

您还可以使用规则来完成此任务

create rule increment_version as on insert to YOUR_TABLE
do update YOUR_TABLE set version=versino+1 where id = new.id;

但是请注意,如果发生错误触发器,则会给您一个异常,但是规则-不是

https://www.postgresql.org/docs/8.2/static/rules-update.html页中的规则 在pg https://www.postgresql.org/docs/9.6/static/plpgsql-trigger.html

中触发

如果您使用mysql,也可以使用触发器,但是语法有些不同 https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

create trigger version after insert on YOUR_TABLE for each row begin
begin
    select max(version) into new_version from YOU_TABLE_NAME where CONDITIONS_YOU_NEED; 
    set new.version = new_version;
end;

答案 1 :(得分:0)

我找到了代码。这在PHP 5中。
这是代码:

if(isset($_POST["Form input"])) {

$input=$_POST["input"];
$ip = getenv("REMOTE_ADDR");
$date=date("d M Y -- H");
$qry_get="select * from `table` where col = '".$input."'";
$qry_get_run=mysql_query($qry_get);
if ($qry_get_run) {
  $ret=mysql_num_rows($qry_get_run);
  if ($ret==0) {


    $qry_ins="INSERT INTO `table` (`col 1`, `col 2`, `col 3`) VALUES ('val1', 'val2', 'val3')";
    $qry_ins_run=mysql_query($qry_ins);
    if ($qry_ins_run) {
      echo "success message";
    }else{
      echo mysql_error();
    }
  }else{
     while ($get=mysql_fetch_assoc($qry_get_run)) {
        $val2=$get['col 2'];
        $id=$get['id'];



        $up_val=$val2+3;


        $qry = "update table_name set `col 2`='".$up_val."' where id='".$id."' ";
        $qry_run=mysql_query($qry);

     }
   }
 }
}