SQL条件用于CASE更新

时间:2014-07-26 06:16:13

标签: php mysql sql case

我正在更新php / SQL中的表单。表单成功更新MYSQL,但它删除任何空字段。我想尝试一个CASE语句,根据表单是否有条目进行更新。

CASE
WHEN (variable is set/is not null?) UPDATE `sales` SET `company` ='$company'
END CASE

我找不到检查变量是否为NULL的方法。那可能吗?语法是什么?

//可能不必要的额外笔记 下面是关于我在php中做什么的信息。这与问题本身无关,但我看到人们更愿意获得更多信息。表单提交给一个类和构造函数。我正在研究依赖注入类,但这看起来有点过分。

<?php
echo "<html>
<form method='POST'>        
<fieldset>              
<input id='company' name='company' type='text' class='form-control' placeholder='". $company. "'>";
</fieldset>
</form> 
</html>
?>

帖子:

<?php
if(isset ($_POST ["company"] )){
require 'updatereq.php';
//$update is the constructor
$update= new Salesupdateentry (($_POST ["company"]));
//update is just the SQL update in a php function, which works, but deletes blanks    
$update->__update();
?>

//请注意 - 我已经缩减到一个变量,但实际上有7.我试图让它更具可读性,但是简单的if(isset($ _ POST [“company”]))不会工作,因为有6个其他POSTS-有一个需要POST的构造函数。这就是为什么我想在SQL中做到这一点

<?php
class Sales 
{
public $company;  
private $db;
public function __construct($company)
{
   $this->company = $company; 
   $this->db =mysqli_connect("localhost", "databasename", "password", "table");
}

public function __save()
{
$this->company=htmlspecialchars($this->company);

$sql = ("INSERT INTO " . "`sales` " . "(`company`)" . " VALUES " . "('{$this->company}') ;");
return mysqli_query($this->db, $sql);
}
}

2 个答案:

答案 0 :(得分:0)

您无法检查MySQL内是否设置了PHP变量。

更好更稳定的方法是检查PHP中的变量是否为空并执行相应的SQL语句。

如果您的变量是MySQL变量,您可以检查它是否为null,如下所示:

CASE WHEN TABLE.FIELD IS NOT NULL...

您也可以使用IFNULL()功能。

NULL值不能与MySQL中的条件运算符一起使用,因此您无法使用<, > or =。相反,您必须使用IS NULLNOT NULL

答案 1 :(得分:0)

请尝试以下代码。我没有检查过这个。但希望这会奏效

CASE
WHEN (variable IS NOT NULL) UPDATE `sales` SET `company` ='$company'
END CASE