mysql if word match statement

时间:2011-04-30 13:22:52

标签: php mysql

如果是如何保存数据 1)单词匹配Pros,它将保存到t_pros
2)与Pros不匹配的单词,它将保存到t_others

我听说我可以使用mysql CASE语句,但不知道如何使用它?

table pro:
id  t_pros   t_others
------------------------
1   Pros 1x
2   Pros 2x
3            voucher

<input type="text" id="t_pros">
$db->query("INSERT INTO pro(t_pros,t_others) VALUES($t_pros, $t_pros)");

3 个答案:

答案 0 :(得分:4)

所以在每一行中,只有两列中只有一列有值?

在这种情况下,如何:

$column = (preg_match('/^Pros/i', $_POST['t_pros'])) ? 't_pros' : 't_others';
$t_pros = mysql_real_escape_string($_POST['t_pros']);
$db->query("INSERT INTO pro($column) VALUES ($t_pros)");

也就是说,根据值是否以“优点”开头选择哪一列(正如您所指示的那样),然后使用MySQL的默认值(通常为NULL)插入到该列中其他

答案 1 :(得分:3)

首先,输入字段需要属性name =“t_pros”。

其次,这段代码对SQL注入是开放的 - 阅读它。

查询可能如下所示:

INSERT INTO pro(t_pros,t_others) VALUES(IF($t_pros = 'Pros', 'Pros', NULL), IF($t_pros = 'Pros', NULL, $t_pros))"

但同样,这不安全。对SQL查询中的所有变量使用mysql_real_escape_string,或使用预准备语句。

答案 2 :(得分:0)

if ($t_pros == 'Pros')
  $t_pros_col = $t_pros;
else
  $t_others_col = $t_pros;

$db->query("INSERT INTO pro(t_pros,t_others) VALUES($t_pros_col, $t_others_col)");