如果是如何保存数据
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)");
答案 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)");