我一直在寻找和尝试不同的方法并且仍然难倒。我有一个表单,用户可以在几个不同的模块上输入大小代码和美元值。如果用户没有输入美元值以插入table1,我希望能够根据大小代码在table2中使用默认值,并在用户点击"时将该值插入table1中的相应字段。添加客户端"。
我的两个表名为Clients and Size。 Size表具有与特定字段的Clients表相同的字段名称。
我正在使用PHP和mysqli语法进行INSERT,UPDATE等并使用MySQL Workbench。
我无法将值硬编码到HTML中,因为此默认值会定期更改,并且更容易在mysql数据库中维护。
有没有办法在插入之前检查值是否为空,如果是,则从Size表中获取默认值,否则使用用户输入值或者在MySQL工作台中有一个方法在插入和拉出后检查从Size表到Clients表的数据?很抱歉有很长的解释,但我真的很难过。
我如何将表单插入客户端的示例如下:
$size_code = mysqli_real_escape_string($db, $_POST['size']);
$value1 = mysqli_real_escape_string($db, $_POST['val1']);
$value2 = mysqli_real_escape_string($db, $_POST['val2']);
$fields = 'size_code, val1, val2'; //fieldnames in database
$values = "'$size_code', '$value1', '$value2'";
$sql = "INSERT INTO clients ($fields) VALUES ($values)";
这适用于插入表单,但如果用户将val2留空,我需要从Size表中的相应字段中提取默认值并使用它而不是有空白字段。任何建议都将不胜感激。
答案 0 :(得分:0)
您可以在SELECT
查询中使用INSERT
语句,并使用IF()
表达式将空字符串替换为默认值。
$sql = "INSERT INTO clients (size_code, val1, val2)
SELECT size_code, IF(? = '', val1, ?), IF(? = '', val2, ?)
FROM sizes
WHERE size_code = ?";
$stmt = mysqli_prepare($db, $sql);
mysqli_stmt_bind_param($stmt, "sssss", $_POST['size'], $_POST['val1'], $_POST['val1'], $_POST['val2'], $_POST['val2']);
mysqli_stmt_execute($stmt);