这个sql IF语句如何工作?

时间:2014-04-03 09:04:51

标签: php mysql if-statement

我试图创建一个php页面,登录用户可以更新他们的个人资料。 我找到了一个例子,我试图坚持:

我从更新表单收到了POST:

$id=$_SESSION['id'];
$info1=mysql_real_escape_string($_POST['info1']);
$info2=mysql_real_escape_string($_POST['info2']);
$info3=mysql_real_escape_string($_POST['info3']);

更新配置文件的SQL查询

$query=mysqli->query("UPDATE profiles SET 
info1=IF('$info1' = '', info1, '$info1'),
info2=IF('$info2' = '', info2, '$info2'),
info3=IF('$info3' = '', info3, '$info3')
WHERE id='$id'");

这个简短的IF声明如何运作? 如果没有输入,我不想更新列 - 这是什么? 我如何为输入添加一些标准?比如字符串的长度等。

3 个答案:

答案 0 :(得分:3)

因此,为了澄清Benio的解释IF()条件的答案,实际上它是说对于你想要更新的每一列,

如果传入的$ variable值为空,则将该列替换为已有的值(即:仅因为出现空值而不销毁它)。如果存在除空白之外的其他内容(IF()函数的另一半),请使用$ variable更新列...

显然,对于info1,2,3的每一列,你有3个不同的$变量。

答案 1 :(得分:2)

IF(CONDITION, STATEMENT if CONDITION is true) for 2 arguments
IF(CONDITION, STATEMENT if CONDITION is true, STATEMENT if CONDITION is false) for 3 arguments

答案 2 :(得分:1)

$sql = sprintf('UPDATE %s SET', $table);

$rowdata = null;
foreach ($rows as $field => $value) {
  $rowdata[] = sprintf('%s = %s', $field, $value); // Escape the $value here!
}
$sql .= sprintf(' %s', implode(', ', $rowdata));

因此,请在$table中输入您的表名,并在名为$rows的关联数组中输入要作为键对值添加的数据,最后您将在$sql中查询您的查询}