仅当所有值都存在时才插入新的MYSQL行
我正在尝试设计一个MySQL查询,如果所有字段都有一个值存在,则只向现有表中添加一个新行,否则应该删除/忽略它 我现时的质询如下:仅当所有值都存在时才插入新的MYSQL行,mysql,Mysql,我正在尝试设计一个MySQL查询,如果所有字段都有一个值存在,则只向现有表中添加一个新行,否则应该删除/忽略它 我现时的质询如下: INSERT INTO markers (`name`, `address`, `details`, `date`, `link`, `lat`, `lng`, `type`) VALUES ("{1}", "{2}", "{3}", "{15}", "{4}", "{11}", "{12}", "{5}") 如果我的表单将{15}留空,那么我不希望将任
INSERT INTO markers (`name`, `address`, `details`, `date`, `link`, `lat`, `lng`, `type`)
VALUES ("{1}", "{2}", "{3}", "{15}", "{4}", "{11}", "{12}", "{5}")
如果我的表单将{15}
留空,那么我不希望将任何其他值添加到表中
希望这有意义
谢谢我要说的是,用Java、C#、Swift等工具检查前端的输入。然后,如果条目为空,只需弹出一条消息,让您的用户知道填写每个字段,或者让您的应用程序跳过该记录。我建议您使用两种不同的解决方案 您可以将数据库设置为不允许空值,然后当您转到insert时,处理空错误(可能不是最好的解决方案)。如果需要空值,那么必须在代码中处理
另一件事是实现表单验证。您可以使用JavaScript、代码隐藏,甚至两者兼而有之。建议两者都使用,因为有些人可能在浏览器上禁用了JavaScript 如果希望直接在MySQL中执行此操作,可以创建一个触发器,在插入值之前检查这些值,如果未满足某些验证规则,则抛出一个错误 示例:
delimiter $$
create trigger no_emtpy_values before insert into markers
for each row
begin
declare msg varchar(255);
declare condition_fail int default 0;
-- Write the appropriate validations and set condition_fail to 1
-- if the validations are not fulfilled. For example:
if NEW.`date` IS NULL then
set condition_fail = 1;
end if;
-- That "NEW" refers to the row about to be inserted
-- If the validation rules are not fulfilled, throw an error:
if condition_fail then
set msg = "You can't insert the data!";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
end if;
end $$
delimiter ;
参考资料:
希望这对您有所帮助您应该检查并处理处理表单提交的脚本语言中的任何输入值(您没有指定)。如果(!empty('field-name')&&&&!empty('second-field')){--您的查询--}正在使用PHP还是其他什么?发布您的完整代码,然后我们可以帮助您。感谢绿辣椒,添加了一个非空排序:0)