为INSERT语句PHP设置默认值

为INSERT语句PHP设置默认值,php,mysql,sql,forms,Php,Mysql,Sql,Forms,我知道这应该是一个简单的问题,我有下面的insert语句,它插入通过表单捕获的值,所有操作都很好,但我还想向表单以外的列添加默认值(比如说语言),我不想通过数据库添加默认值,因为我有两张表格放在一张桌子上 $stmt = DB::query(Database::INSERT, 'INSERT INTO `my_products` (`first_name`, `initial`, `last_name`, `street`) VALUES (:first_name, :initi

我知道这应该是一个简单的问题,我有下面的insert语句,它插入通过表单捕获的值,所有操作都很好,但我还想向表单以外的列添加默认值(比如说语言),我不想通过数据库添加默认值,因为我有两张表格放在一张桌子上

$stmt = DB::query(Database::INSERT,
    'INSERT INTO `my_products` (`first_name`, `initial`, `last_name`, `street`)
    VALUES (:first_name, :initial, :last_name, :street)');                                                      

$stmt->param(':first_name', $post['first_name']);
$stmt->param(':initial', $post['initial']);
$stmt->param(':last_name', $post['last_name']);
$stmt->param(':street', $post['street']);

有没有办法通过上述方法指定默认值?

这有什么问题

$stmt = DB::query(Database::INSERT,
    "INSERT INTO `my_products` (`first_name`, `initial`, `last_name`, `street`, `myColumn`)
    VALUES (:first_name, :initial, :last_name, :street, 'my default value')");
或者可能:

$stmt = DB::query(Database::INSERT,
    'INSERT INTO `my_products` (`first_name`, `initial`, `last_name`, `street`, `myColumn`)
    VALUES (:first_name, :initial, :last_name, :street, :my_column)');

...
$stmt->param(':my_column', 'my default value');

在这种情况下,您可以使用我的微型库,例如:

$stmt->param(':my_column', ValueResolver::resolve($post['first_name'], 'default')); // returns 'default' if $post['first_name'] is empty
不要忘记使用namespace
使用LapaLabs\ValueResolver\Resolver\ValueResolver

还可以进行类型转换,例如,如果变量的值应为
整数
,请使用以下方法:

$id = ValueResolver::toInteger('6 apples', 1); // returns 6
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)

查看更多示例

因为您有两个表单应该保存到同一个表中,所以请在表单中使用隐藏类型表单字段,并将其作为常规参数接受。在这种情况下,您可以使用我的微型库,请检查我的答案Enumber 2适用于我,谢谢!我也做过类似的事情,但我错把$post留在了。