-1
4

2 に答える 2

0

2 つの配列を作成するのではなく、すべての変数を配置して 1 つの文字列を作成し、SQL で IF 条件チェックを実行します。前に言ったように、これはKitet によるこの例に基づいています。

<?php 

$values=array();

//this will be an array of possible fields that are in your table
$possible=array('field1', 'field2', 'field3');

$i=0;
$len=count($_POST);
$query='update table_name set ';
foreach($_POST as $key => $value){
$k=htmlspecialchars($key);
$v=htmlspecialchars($value);
if(in_array($k, $possible)){
$query .= '`' .$k .'`' .'= IF("'.$v .'"= "", `' .$k .'`, "' .$v .'")'; //changes here!!!

if($i < ($len-1)) $query .= ', ';
$i++;
}
}
$query .= 'where table_id = '.$table_id;

$update_data= $db_con->prepare($query); // I prepare the statement here as a safety net  
$update_data->execute(); // the execute it

?>

そして今、すべてが期待どおりに機能します:)これが他の誰かに役立つことを願っています.

于 2013-09-23T21:09:03.627 に答える
0
<?php

  $values = ARRAY();


  $sql_query = "UPDATE `userData` SET `name`= ?, `submitDate`= ?, ";
  $values[] = $variable_name; //:name, now ?
  $values[] = $variable_date; //:submitDate, now ?

  if (!empty($v)) {
    $sql_query .= "`contacts`= ?,";
    $values[] = $v; //:contacts, now ?
  }

  $sql_query .= "`email`= ? WHERE `submit_id`= ?;";
  $values[] = $variable_email; //:email, now ?
  $values[] = $variable_submit_id; //:submit_id, now ?

  $contactDetails= $db_con->prepare($sql_query);
  $this_query->execute($values);

?>
于 2013-09-23T01:15:58.023 に答える