PHP MySQL UPDATE只有一个Cell,而不是整行

时间:2017-07-10 07:06:17

标签: php mysql sql

所以我有一个行的表,点击'bearbeiten',我得到一个公式,我可以填写更改的名称或其他,然后一切都改变而不是只有我写的东西和其他的字段停留。

因此,如果我只更改名称并单击“保存”,则表格中的每个其他字段都将变为空白。

我已经尝试了WHERE,并且读到POST是一个很好的方法,但我想我可以通过在$ sql语句中进行一些更改来改变它,只是不知道是什么。

<?php
//if(isset($...)
if($_GET['aktion'] == "speichern")
{    
$ID             = $_GET['ID'];
$Anrede         = $_GET['Anrede'];
$Nachname       = $_GET['Nachname'];
$Vorname        = $_GET['Vorname'];
$Geburtsdatum   = $_GET['Geburtsdatum'];
$Telefonnummer  = $_GET['Telefonnummer'];
$Email          = $_GET['Email'];


$sql = "UPDATE Adressbuch SET Anrede = '$Anrede', Nachname = '$Nachname',Vorname = '$Vorname', Geburtsdatum = '$Geburtsdatum', Telefonnummer = '$Telefonnummer', Email = '$Email' ORDER BY ID DESC LIMIT 1";

echo '<a href="adressbuch-abfragen">Zurueck zum Adressbuch</a><br>';
require_once ('konfiguration.php');

$db_erg = mysqli_query($db_con, $sql)
    or die("Anfrage fehlgeschlagen: " . mysqli_error($db_con));

        exit;
}

2 个答案:

答案 0 :(得分:1)

怎么样: 只需更新列,如果变量不为空,则使用与记录已有的值相同的值更新列。

UPDATE Adressbuch 
   SET Anrede =         CASE WHEN '$Anrede' != ''        THEN '$Anrede'        ELSE Anrede        END
      ,Nachname =       CASE WHEN '$Nachname' != ''      THEN '$Nachname'      ELSE Nachname      END
      ,Vorname =        CASE WHEN '$Vorname' != ''       THEN '$Vorname'       ELSE Vorname       END
      ,Geburtsdatum =   CASE WHEN '$Geburtsdatum' != ''  THEN '$Geburtsdatum'  ELSE Geburtsdatum  END
      ,Telefonnummer =  CASE WHEN '$Telefonnummer' != '' THEN '$Telefonnummer' ELSE Telefonnummer END
      ,Email =          CASE WHEN '$Email' != ''         THEN '$Email'         ELSE Email         END
 ORDER BY ID DESC LIMIT 1

答案 1 :(得分:0)

使用as并查看它是否有效。感谢。

<?php 
require_once ('konfiguration.php');
//if(isset($...)
if($_GET['aktion'] == "speichern")
{    
  $ID             = $_GET['ID'];
  $Anrede         = $_GET['Anrede'];
  $Nachname       = $_GET['Nachname'];
  $Vorname        = $_GET['Vorname'];
  $Geburtsdatum   = $_GET['Geburtsdatum'];
  $Telefonnummer  = $_GET['Telefonnummer'];
  $Email          = $_GET['Email'];

  //use where in your query to update the particular row
  //in below query id = your column in database table
  $sql = "UPDATE Adressbuch SET Anrede = '$Anrede', Nachname = '$Nachname',Vorname = '$Vorname', Geburtsdatum = '$Geburtsdatum', Telefonnummer = '$Telefonnummer', Email = '$Email' WHERE id='$ID'";

  $db_erg = mysqli_query($db_con, $sql) or die("Anfrage fehlgeschlagen: " . mysqli_error($db_con));

  echo '<a href="adressbuch-abfragen">Zurueck zum Adressbuch</a><br>';

  exit;
}
?>

使用POST方法代替GET。