0

データベース内のテーブルを編集するフォーム。ただし、ユーザーは画像を選択できない可能性があるため、そうでない場合はそのフィールドを更新したくありません。これを行うためにいくつかの方法を試しましたが、どれもうまくいきません。簡単な方法はありますか?ありがとう。

if ($_POST["image"]!=='') { 
      $image= "image=%s"; 
      $imageValue =    "GetSQLValueString(".$_POST['image'].", 'text'),";
};

$insertSQL = sprintf("UPDATE taxi SET name=%s, taxi_link=%s, ". $image." WHERE id=%s",
                   GetSQLValueString($_POST['name'], "text"),
                   GetSQLValueString($_POST['link'], "text"),
                   $imageValue,
                   GetSQLValueString($_POST['id'], "int"));
4

2 に答える 2

2

私があなたのことをちゃんと理解していれば、if 文にすべてを入れていただけないでしょうか。

if ($_POST["image"]!=='') { 
      $image= "image=%s"; 
      $imageValue =    "GetSQLValueString(".$_POST['image'].", 'text'),";
      $insertSQL = sprintf("UPDATE taxi SET name=%s, taxi_link=%s, ". $image." WHERE id=%s",
                   GetSQLValueString($_POST['name'], "text"),
                   GetSQLValueString($_POST['link'], "text"),
                   $imageValue,
                   GetSQLValueString($_POST['id'], "int"));
      //execute query
} else {
    //tell the user nothing happened
} //no semicolon required

そのため、イメージが指定されている場合にのみクエリを作成して実行し、指定されていない場合は他のことを行うことができます

于 2012-05-02T13:06:54.667 に答える
1

CodeIgniterのようなフレームワークを使用する場合は、次のことができます。

$arr_values = array('name' => $_POST['name'],
                    'taxi_link' => $_POST['link']);

if ( ! $_POST["image"])
    $arr_values['image'] = $_POST['image'];

$this->db->update($arr_values, array('id' => $_POST['id']));

update()は単純に配列を処理し、条件に基づいてその配列に値を追加するだけです。

個人的には、このような独自の関数を作成しました。これは、配列値の追加と使用に最適です。

クエリを修正しました:

$image = '';
if ($_POST["image"] !== '')
      $image= ", image=".GetSQLValueString($_POST['image'], 'text');

$insertSQL = sprintf("UPDATE taxi SET name=%s, taxi_link=%s {$image} WHERE id=%s",
                   GetSQLValueString($_POST['name'], "text"),
                   GetSQLValueString($_POST['link'], "text"),
                   GetSQLValueString($_POST['id'], "int"));
于 2012-05-02T13:11:30.060 に答える