【问题标题】:PHP- how to insert form data first time and second time update same dataPHP-如何第一次插入表单数据和第二次更新相同的数据
【发布时间】:2018-02-27 04:26:19
【问题描述】:

我有一个带有提交按钮的输入字段名称(id、设置、值)的表单。现在,我现在将表单数据插入数据库,我希望从第一次插入数据时如何更新相同的表单数据第二次不插入数据..

    <?php 
    if(isset($_POST['save']))
    {
    include "connection.php" ;

    $id = $_POST['id'] ;
    $name = $_POST['name'] ;
    $value   = $_POST['value'] ;

$query="create table if not exists settings(id int(10),name varchar(50),value varchar(100))";
$results=mysql_query($query) or die("QUERY FAILED 1:".mysql_error());   

$query="INSERT INTO settings VALUES('$id','$name','$value')"; 
$results=mysql_query($query) or die("QUERY FAILED 2:".mysql_error());


 $query="update settings set value='$value' where id='$id'";
 $results=mysql_query($query) or die("QUERY FAILED 3:".mysql_error());



     echo $settings ;

    }

【问题讨论】:

  • 插入数据时,获取该数据的最后一个插入 id 并使用该 id 更新它
  • 我建议您避免使用INSERT 查询插入id,将id 设置为DB 中的primary key 并让它自动递增。插入后,您将获得最后插入的记录 id 为$last_inserted_id = $mysql-&gt;insert_id;,根据需要使用此 id 进行更新。我不确定您为什么要使用相同的 $value 更新相同的数据库记录
  • 正如@Sinto 所说,不要在创建表时插入 id 使 id 自动递增,并在更新前使用 select 语句获取最后一个插入 id。

标签: php mysql


【解决方案1】:

您需要查询表以检查该值是否存在。如果记录不存在,则插入,否则更新。

<?php
    if(isset($_POST['save']))
    {
    include "connection.php" ;
    $id = $_POST['id'] ;
    $name = $_POST['name'] ;
    $value   = $_POST['value'] ;

    $query="create table if not exists settings(id int(10),name varchar(50),value varchar(100))";
    $results=mysql_query($query) or die("QUERY FAILED 1:".mysql_error());


    // pass the name and check whether the value is exists or not,
    $result = mysql_query("SELECT * FROM settings WHERE name = '".$name."'");
    $number_of_rows = mysql_num_rows($result);

    // if number of rows is 0, then insert it. else update it
    if($number_of_rows == 0){
        $query="INSERT INTO settings VALUES('$id','$name','$value')";
    } else{
        // get the row id
        $data_row = mysql_fetch_row($result);
        $record_id = $data_row[0];
        $query="UPDATE settings SET value='".$value."' WHERE id = '".$record_id."'";
    }

    $results=mysql_query($query) or die("QUERY FAILED 2:".mysql_error());

     echo "Record inserted/updated";
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2018-11-05
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多