我正在更新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);
}
}
答案 0 :(得分:0)
您无法检查MySQL内是否设置了PHP变量。
更好更稳定的方法是检查PHP中的变量是否为空并执行相应的SQL语句。
如果您的变量是MySQL变量,您可以检查它是否为null,如下所示:
CASE WHEN TABLE.FIELD IS NOT NULL...
您也可以使用IFNULL()功能。
NULL值不能与MySQL中的条件运算符一起使用,因此您无法使用<, > or =
。相反,您必须使用IS NULL
或NOT NULL
。
答案 1 :(得分:0)
请尝试以下代码。我没有检查过这个。但希望这会奏效
CASE
WHEN (variable IS NOT NULL) UPDATE `sales` SET `company` ='$company'
END CASE