-2

コードがあります:

$id = $_POST['id'];
$name = $_POST['name'];
$surname = $_POST['surname'];
$mail = $_POST['mail'];

$sql = "UPDATE emps SET";
$moresql = '';

if(isset($name) && !empty($name)) {
    $moresql .= " name = '$name'";  
}

if(isset($surname) && !empty($surname)) {
    if ($moresql) $moresql .= ',';
    $moresql .= " surname = '$surname'";    
}

if(isset($mail) && !empty($mail)) {
    if ($moresql) $moresql .= ',';
    $moresql .= " mail = '$mail'";  
}

$sql .= $moresql;
$sql .= " WHERE Id = '$id'";

このコードでは、たとえば、名前を付けて姓と電子メールの既存の値を残すか、姓を更新して名前と電子メールの既存の値を残すことができます

しかし、たとえば、名前と姓を更新して電子メールの既存の値を残すか、姓と電子メールを更新して名前の既存の値を残すか、すべてのフィールドを更新することも一度に必要です。どうやって?

4

2 に答える 2

3
<form action="settings.php" method="POST">
       <input type="text" name="full name" />
       <input type="text" name="email" />
       ........ (and more)
</form>

<?php
  if($_POST)
  {
   if(isset($_POST['full name'])) { //Update full name of user and redirect to the settings page on success. }
   else { //Redirect and show errors! }
   if(isset($_POST['email'])) { //Update email of user and redirect to the settings page on success. } 
   else { //Redirect and show errors! }      
  }
?>

または、PHP の配列関数を使用して、MySql クエリを次のように設定できます ---

<?php
  mysql_query("
    UPDATE table name SET 
    //Loading different values from the array using foreach() php function.
  ");
?>

同様で便利:

if(isset($_POST['foo']) && !empty($_POST['foo'])){/*do stuff*/}
于 2013-02-27T18:24:08.513 に答える
1
SET ... name=name, email=email

このようにして、テーブルは以前の値を保持します (col_name=col_colname)

PHPで

if(isset($mail) && !empty($mail)) 
{
    if ($moresql) $moresql .= ',';
    $moresql .= " mail = '$mail'";  
}
else
{
 if ($moresql) $moresql .= ',';
    $moresql .= " mail = mail"; 
}
于 2013-02-27T18:17:19.180 に答える