mysql - 如何在mysql语句中插入三元运算符

标签 mysql perl

我有一个查询,在 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/

相关文章:

javascript - 非 UTC 服务器上所有带有时间戳的 mysql 导出文件是否存在错误?

php - 更新时的顺序表

perl - 在 IO::Socket::SOCKS 代理上使用 IO::Socket::SSL

perl - 如何检查是否导入了所有 Perl 模块?

java - java加载Mysql类驱动的方法

mysql - 添加子查询后查询速度变慢

perl - 打开(句柄, "-|",$cmd,@args): how to read stderr?

linux - 如何按列对一组数据进行排序?

perl - 寻求 Perl 成语来检查 $self 是一个类或对象

php - 将所选值从下拉菜单发送到另一个页面