我知道这应该是一个简单的问题,我有以下插入语句,它插入通过表单捕获的值,一切正常,但我还想将一个默认值添加到不在我的表单上的列(让我们说例如语言),我不想通过数据库添加默认值,因为我有两个表格一起到一个表。
$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']);
有没有办法通过上面指定默认值?
答案 0 :(得分:3)
这有什么问题?
$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');
答案 1 :(得分:0)
在这种情况下,您可以使用我的小型库ValueResolver,例如:
$stmt->param(':my_column', ValueResolver::resolve($post['first_name'], 'default')); // returns 'default' if $post['first_name'] is empty
并且不要忘记使用命名空间use LapaLabs\ValueResolver\Resolver\ValueResolver;
还可以进行类型转换,例如,如果您的变量的值应该是integer
,那么请使用:
$id = ValueResolver::toInteger('6 apples', 1); // returns 6
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)
查看docs了解更多示例