【发布时间】:2015-11-04 07:17:20
【问题描述】:
我有 2 个相关的表
一个是claim_item_category
|---------------------|------------------|
| claim_item_id | claim_item_name |
|---------------------|------------------|
| 1 | Transport |
|---------------------|------------------|
| 2 | Medical |
|---------------------|------------------|
第二个是claim_list
|---------------------|------------------|------------------|
| claim_list_id | claim_item_id | Amount |
|---------------------|------------------|------------------|
| 1 | 1 | 20.50 |
|---------------------|------------------|------------------|
用户有一个选择框来选择Claim Item
<select name="claim_item_id" class="form-control" required="required" aria-required="true">
<option value="" selected="SELECTED">...</option>
<option value="1">Transport</option>
<option value="2">Medical</option>
</select>
如果他们检查代码将 option 值更改为 3,这在 claim_item_category 表中不存在,它也会保存到数据库中,然后输出将为空白。
是否可以检查 claim_item_category - claim_item_id 是否已经存在然后才保存?
我的插入 sql 查询:
sprintf("INSERT INTO `claim_list`
(`claim_item_id`,`Amount`)
VALUES
('%d','%s');"
,$this->claim_category_id,$this->claim_amount);
更新
我已经为两个表添加了外键,所以如果没有退出 claim_item_id 则无法插入或更新。 问题已解决,谢谢
【问题讨论】:
-
在
insert语句之前使用select和where子句检查特定的id以检查id是否存在。 -
不需要先检查。事实上,这会适得其反——令人失望的是,其他受访者(到目前为止)都不知道这一点。您可以简单地运行 INSERT。当 INSERT 失败时,您知道索引 id 已经存在。或者,请参阅 INSERT... SELECT 语法。