我正在尝试更新数据库表。如果表单中的密码为空,我如何通过提供一个条件来防止表单中的密码(“memberpassword”,$pass)被sql代码更新?有可能吗?
//database connection
$SQL = "mysql:host=" . $this->MYSQL_HOST . ";dbname=" . $this->MYSQL_DB;
try {
$this->pdo = new \PDO($SQL, $this->MYSQL_USER, $this->MYSQL_PASS);
$this->pdo->exec("SET NAMES'" . $this->CHARSET . "'COLLATE'" . $this->COLLATION . "'");
$this->pdo->exec("SET CHARACTER SET'" . $this->CHARSET . "'");
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
} catch (PDOException $e) {
die( $e->getMessage());
}
}
//Connect DB END
private function myQuery($query, $params = null)
{
if (is_null($params)) {
$this->stmt = $this->pdo->query($query);
} else {
$this->stmt = $this->pdo->prepare($query);
$this->stmt->execute($params);
}
return $this->stmt;
}
public function Update($query, $params = null)
{
try {
return $this->myQuery($query, $params)->rowCount();
} catch (PDOException $e) {
die($e->getMessage());
}
}
$update = $db->Update("UPDATE members SET
MemberUsername=?,
MemberPassword=?,
MemberEmail=?,
MemberName=?,
MemberLastName=?,
MemberBirthday=?,
MemberAge=?,
MemberGender=?,
CityID=?
WHERE MemberID=?
", array($username, $pass, $email, $name, $lastname, $birthday, $age, $gender, $city, $memberID));
您可以轻松地使用IFNULL(expr1、expr2):
IFNULL返回expr1,如果它们不为null,则返回expr2
$update = $db->Update("UPDATE members SET
MemberUsername=?,
MemberPassword=IFNULL(?,MemberPassword),
MemberEmail=?,
MemberName=?,
MemberLastName=?,
MemberBirthday=?,
MemberAge=?,
MemberGender=?,
CityID=?
WHERE MemberID=?
", array($username, $pass, $email, $name, $lastname, $birthday, $age, $gender, $city, $memberID));
问题内容: 我有一个使用条件api动态组合在一起的hibernate查询。如果按原样执行,它将生成令人难以忍受的缓慢查询。 但是我已经注意到,如果我在查询前加上/ * + FIRST_ROWS(10)* /,它们的速度大约要快1000%。我该如何使用标准API? 我试过criteria.setComment(..),但这似乎被忽略了。 在hibernate文档中,3.4.1.7。提到了查询提示,但
问题内容: 假设我有一个名为“ Company”的表,其中包含CompanyID关键字。还有另一个名为“ CompanyAddress”的相关表,该表具有CompanyID外键,因此可以轻松地建立联接。 该CompanyAddress表可以具有给定公司的多个地址,例如AddressType = 1或AddressType = 2 用于获取字段的联接等是微不足道的,但是我需要一个条件,在该条件下查询
问题内容: 我有一个使用条件api动态组合在一起的休眠查询。如果按原样执行,它将生成令人难以忍受的缓慢查询。 但是我已经注意到,如果我在查询前加上/ * + FIRST_ROWS(10)* /,它们的速度大约要快1000%。我该如何使用标准API? 我试过criteria.setComment(..),但这似乎被忽略了。 在休眠文档中3.4.1.7。提到了查询提示,但明确指出:“请注意,这些不是S
问题内容: 我有PostgreSQL数据库,我尝试打印所有用户(人)。 当我执行此查询时 我得到所有车主按汽车数量排序 输出: 当我尝试链接所有者ID时,所有订单都出错了。 输出:和其他数据 你看比命令是错误的。所以这是我的问题,我该如何保存该订单? 问题答案: 解开混乱。先汇总,然后再加入: 无需加入两次。如果您计数 最多或所有行, 这应该是最快的。 对于 较小的选择 , 相关子查询 更快: 至
问题内容: 所以我想要实现的是与每个索引的自定义可搜索字段部分匹配。我生成一个带有要搜索的值的值,如果该值不止一个单词,则每个单词又生成另一个值(我可以使用,但它有错误,或者具有未记录的设置)。 在这种情况下,我正在寻找;查询如下所示: 我的目标搜索是获取首先具有的结果,然后搜索just 或。 此示例返回4个具有的结果,然后是仅具有的结果,然后是个更多的结果。 如何提高具有完整搜索值的结果?(“电
问题内容: 我有如下查询 我想以某种方式重用 我简化了上面的查询,但是实际上上面的选择是巨大而复杂的。我不想负担确保两者同步 我没有任何以编程方式重用它的方法。排除了T-SQL。我只能写简单的查询。这是应用程序的限制。 有没有一种方法可以在单个语句中重用相同的子查询 问题答案: 如果您使用的是SQL Server 2005+,请使用公用表表达式(CTE):