mysql动态sql查询_对MySQL数据库进行动态SQL查询

我以前从未将golang与mysql一起使用,因此我是第一次阅读这些内容。我想做这样的事情:

if userId && gender && age

db.QueryRow("SELECT name FROM users WHERE userId=? AND gender=? AND age=?", userId,gender,age)

else if gender && age

db.QueryRow("SELECT name FROM users WHERE gender=? AND age=?", gender, age)

else if userId && gender

db.QueryRow("SELECT name FROM users WHERE userId=? AND gender=?", userId,gender)

else if userId && age

db.QueryRow("SELECT name FROM users WHERE userId=? AND age=?", userId, age)

else if gender

db.QueryRow("SELECT name FROM users WHERE gender=?", gender)

else if userId

db.QueryRow("SELECT name FROM users WHERE userId=?", userId)

else if age

db.QueryRow("SELECT name FROM users WHERE age=?", age)

这种输入太多了,特别是如果我想将更多变量添加到WHERE条件中时。

如果这是PHP,我将执行以下操作:

$sql = "SELECT name FROM users ";

$where = array();

foreach(explode(",","userId,gender,age,name,height,weight,ethnicity" as $field)

{

if(isset($arrayOfValues[$field]))

{

$where[count($where)] = $field." = ?".$field

$db->bind("?".$field,$arrayOfValues[$field]);

}

}

if(count($where)>0)

$sql = $sql . " WHERE ".implode(" AND ",$where);

$db->query($sql);

通过使用foreach循环,我可以动态生成查询并根据需要动态绑定尽可能多的变量。

像golang和mysql这样的选项吗?还是有一些替代方案,可以不为查询输入每个变量组合?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值