Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL只更新一个单元格,而不是整行_Php_Mysql_Sql - Fatal编程技术网

PHP MySQL只更新一个单元格,而不是整行

PHP MySQL只更新一个单元格,而不是整行,php,mysql,sql,Php,Mysql,Sql,因此,我有一个表,有一行,点击“bearbeiten”,我得到一个公式,我可以填写更改的名称或任何内容,然后所有内容都会更改,而不仅仅是我在其中写入的字段,其余的都会保留 因此,如果我只更改名称并单击save,表中的所有其他字段都将变为空白 我已经在WHERE上试过了,读到这篇文章是一个很好的方法,但是我认为我可以通过在$sql语句中做一些更改来改变它,只是不知道是什么 <?php //if(isset($...) if($_GET['aktion'] == "speichern") {

因此,我有一个表,有一行,点击“bearbeiten”,我得到一个公式,我可以填写更改的名称或任何内容,然后所有内容都会更改,而不仅仅是我在其中写入的字段,其余的都会保留

因此,如果我只更改名称并单击save,表中的所有其他字段都将变为空白

我已经在WHERE上试过了,读到这篇文章是一个很好的方法,但是我认为我可以通过在$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;
}
怎么样:
如果变量不是空的,只需更新列,否则就用记录已有的值更新它

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

使用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;
}
?>

我喜欢那些德语postsignore the echo和我的变量名x)不是调用页面时填充的字段吗?因此,如果您想更改条目,很可能数据库中已有数据。为什么不输出它们并填充字段?当您保存它们时,除了所做的更改外,所有内容都保持不变。@EstebanP。什么不是莱希特;Pi也试过这样做,但不知怎么的没有成功。这个很好用,谢谢!我仍然希望公式中已经填入我选择的行,然后只更改已经设置的数据,但这在我考虑这样做的时候是有效的^^