我想创建一个简单的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'] . "";
答案 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
希望这能让您知道如何处理您的代码。