仅当该值与空值不同时才更新列上的值

时间:2012-12-11 15:22:25

标签: php mysql

我有这个表单,现在,我需要仅使用非空变量更新数据库的各个部分。 我的意思是,如果我有这个:

$postEmri       = filter_var($_POST["postEmri"], FILTER_SANITIZE_EMAIL);
$postKlienti        = filter_var($_POST["postKlienti"], FILTER_SANITIZE_STRING);
$postTelefoni   = filter_var($_POST["postTelefoni"], FILTER_SANITIZE_STRING);

而且:

$sql="UPDATE forma SET emri='$postEmri', klienti='$postKlienti', telefoni='$postTelefoni'";

如果$postEmri, $postKlientiundefinedempty,我不希望更新该记录。 我怎么能用某些条件来做呢?

谢谢

所以我需要这样做?

$sql="UPDATE forma SET ";
// add every non-empty field to the query
if (!empty($postEmri)) $sql += " emri='$postEmri',";
if (!empty($postKlienti)) $sql += " klienti='$postKlienti',";
if (!empty($postTelefoni)) $sql += " telefoni='$postTelefoni,'";
// replace the last `,` for `;`
$sql = substr($sql, 0, -1) . ";";
$result=mysql_query($sql) or die(mysql_error()) ;

4 个答案:

答案 0 :(得分:3)

如果您只想更新非空字段:

$sqlStart="UPDATE forma SET ";
$sql="";
// add every non-empty field to the query
if (!empty($postEmri)) $sql .= " emri='$postEmri',";
if (!empty($postKlienti)) $sql .= " klienti='$postKlienti',";
if (!empty($postTelefoni)) $sql .= " telefoni='$postTelefoni,'";
// if any of the fields is non-empty, run the query
if ($sql != "") {
    // replace the last `,` for `;`
    $sql = substr($sql, 0, -1) . ";";
    // run sql command
    $sqlCommand = $sqlStart.$sql;
} else {
    // no fields to update
}

答案 1 :(得分:1)

您可以使用empty

if (!empty($someVariable))
     //do something

答案 2 :(得分:0)

更新

如果你有100个帖子变量,你说你想要没有“100 if语句”。这是你如何做到这一点,这将检查所有$ _POST变量。请记住,这不会检查某些输入字段是否为空,这意味着输入值中可能有空格而不会返回错误。

// Here you set how many results there should be from $_POST (total inputs)
$totalInputs=100;

if(count($_POST) != $totalInputs)
{
    echo "You forgot to fill all fields.";
}
else
{
    // Do your MySQL query here
}

希望它可以帮到你!


旧代码

使用以下PHP代码段:

if(!empty($postEmri) && !empty($postKlienti))
{
     $sql="UPDATE forma SET emri='$postEmri', klienti='$postKlienti', telefoni='$postTelefoni'";
}

PHP函数empty()检查变量是否为空。

更多信息: http://php.net/manual/en/function.empty.php

答案 3 :(得分:0)

$sql='UPDATE forma SET ';
$appendSql = '';
if ( !empty($postEmri) ) $appendSql .= '`emri` = \" . $postEmri. \",';
if ( !empty($postKlienti) ) $appendSql .= '`klienti` = \" . $postKlienti. \",';
etc.

if ( !empty($appendSql)  ) {
    $sql =. $appendSql;
    $sql = substr($sql, 0, -1); 
    // Do query
} else {
    // Nothing to do, since nothing changed.
}