PHP MYSQL:检查表单的空白值,从表2中获取值并在表1中使用该值

时间:2017-11-20 15:53:26

标签: php mysql

我一直在寻找和尝试不同的方法并且仍然难倒。我有一个表单,用户可以在几个不同的模块上输入大小代码和美元值。如果用户没有输入美元值以插入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表中的相应字段中提取默认值并使用它而不是有空白字段。任何建议都将不胜感激。

1 个答案:

答案 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);