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 回答