Php MySQL仅在字段为空或NULL时更新字段
我有一个很长的更新查询Php MySQL仅在字段为空或NULL时更新字段,php,mysql,Php,Mysql,我有一个很长的更新查询 $sql = "UPDATE table SET field_1 = '$field_1', field_2 = '$field_2', field_3 = '$field_3' ... WHERE id = '$id' "; 我希望仅当目标字段为空或NULL时才进行更新。 我想我可以用这样的东西: UPDATE table SET field_1 = '$field_1' WHERE field_1 IS NULL OR field_1 = '
$sql = "UPDATE table SET
field_1 = '$field_1',
field_2 = '$field_2',
field_3 = '$field_3'
...
WHERE id = '$id'
";
我希望仅当目标字段为空或NULL时才进行更新。
我想我可以用这样的东西:
UPDATE table SET field_1 = '$field_1' WHERE field_1 IS NULL OR field_1 = ''
但是我怎样才能一次将其应用于所有字段呢?是的,我相信这是可能的。您可以使用IF()函数来实现这一点
UPDATE`table`SET field_1=IF(field_1为NULL或field_1=“”,?,field_1),field_2=IF(field_2为NULL或field_2=“”,?,field_2)
请注意以下内容:?在查询中,因为这些是准备好的语句的占位符
<>你在使用用户输入时应该认真考虑。例如:
$conn = new PDO; // configure this class accordingly.
$query = $conn->prepare("select * from table where field = ? and field_2 = ?");
try {
$query->execute(array($value1, $value2));
} catch (PDOException $e) {
$e->getErrors(); // Do what you want to do with this log, print etc.
}
$results = $query->fetchAll(PDO::FETCH_ASSOC); // This will return an array of results.
$result = $query->fetch(PDO::FETCH_ASSOC); // This will return the first result.
<强>以上仅是如何实现一个防止SQL注入的查询的例子,请在这里阅读更多信息,并考虑采用< <强>
是的,我相信这是可能的。您可以使用IF()函数来实现这一点
UPDATE`table`SET field_1=IF(field_1为NULL或field_1=“”,?,field_1),field_2=IF(field_2为NULL或field_2=“”,?,field_2)
请注意以下内容:?在查询中,因为这些是准备好的语句的占位符
<>你在使用用户输入时应该认真考虑。例如:
$conn = new PDO; // configure this class accordingly.
$query = $conn->prepare("select * from table where field = ? and field_2 = ?");
try {
$query->execute(array($value1, $value2));
} catch (PDOException $e) {
$e->getErrors(); // Do what you want to do with this log, print etc.
}
$results = $query->fetchAll(PDO::FETCH_ASSOC); // This will return an array of results.
$result = $query->fetch(PDO::FETCH_ASSOC); // This will return the first result.
<强>以上仅是如何实现一个防止SQL注入的查询的例子,请在这里阅读更多信息,并考虑采用< <强>
我会将更新分为三个独立的查询
UPDATE table SET field_1 = '$field_1' WHERE field_1 IS NULL OR field_1 = '';
UPDATE table SET field_2 = '$field_2' WHERE field_2 IS NULL OR field_2 = '';
UPDATE table SET field_3 = '$field_3' WHERE field_3 IS NULL OR field_3 = '';
我只是将更新分为三个单独的查询
UPDATE table SET field_1 = '$field_1' WHERE field_1 IS NULL OR field_1 = '';
UPDATE table SET field_2 = '$field_2' WHERE field_2 IS NULL OR field_2 = '';
UPDATE table SET field_3 = '$field_3' WHERE field_3 IS NULL OR field_3 = '';
我知道这很愚蠢,但我决定走这条路,因为我现在无法理解准备好的陈述。我知道这很愚蠢,但我决定走这条路,因为我现在无法理解准备好的陈述。