我有一个查询,在 where 语句中我想插入一个三元运算符,如下所示:
WHERE
$self->is_defined? 'some_column = $self->defined' : 'some_other_column = $self->defined_some'
AND blah blah blah
AND blah blah blah
类似这样的事情。怎么做?
到目前为止,我的代码是这样的,它不起作用:
"SELECT blah blah blah
WHERE
"$self->is_defined ? 'o.project_id = "$self->project_id"' : 'o.brand_id = "$self->brand_id"'"
最佳答案
首先,方法调用不会在双引号内插入,更不用说在单引号内插入。
创建sql时应该使用占位符以避免sql injection ,
my $sql = "SELECT * from ... WHERE ";
my ($cond, $val) = $self->is_defined
? ("some_column = ?", $self->defined)
: ("some_other_column = ?", $self->defined_some);
# constructing final sql..
$sql .= $cond;
my $st = $db_handle->prepare($sql) or die $db_handle->errstr;
$st->execute($val) or die $st->errstr;
关于mysql - 如何在mysql语句中插入三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19582540/