在变量不为空的行中更新SQL数据库

时间:2015-04-19 12:28:08

标签: php mysql sql database

我想创建一个简单的SQL UPDATE查询,它可以通过IF语句检查传递的POST变量是否为空。如果为空则不会修改原始值,如果没有则更新。我以前无法弄清楚我是怎么做到的。

它应该是这样的,但不起作用:

$sql = "UPDATE Clients SET Name = IF(" . $_POST['edit_client_name'] .
    " = '', Name, " .
    mysqli_real_escape_string( $this -> link,  $_POST['edit_client_name'] ) .
    " WHERE Id=" . $_GET['selected_client'] . "";

2 个答案:

答案 0 :(得分:0)

您需要在应用程序中检查此内容而不是查询。像

if(isset($_POST['edit_client_name'])){

  $name = mysqli_real_escape_string( $this -> link,  $_POST['edit_client_name'] );
  $id = mysqli_real_escape_string( $this -> link, $_GET['selected_client'] );
  mysqli_query("UPDATE Clients SET Name = '".$name."' WHERE Id=".$id."');

} 

答案 1 :(得分:0)

您可以通过SQL进行调整,而不是在数据库中进行检查。

我跳过了SQL注入预防部分。

<?php
if(empty($_POST['edited_client_name'])){
    $namequery = '';
}
else{
    $namequery = "Name = '".$_POST['edited_client_name']."'";
}

$sql = "UPDATE Clients SET ".$namequery." WHERE ID = ".$_GET['selected_client'];

echo $sql;
?>

返回:

UPDATE Clients SET Name = 'foo' WHERE ID = 1

提供edited_client_name时,

否则返回:

UPDATE Clients SET WHERE ID = 1

希望这能让您知道如何处理您的代码。