【发布时间】:2012-05-03 02:13:19
【问题描述】:
我不断收到错误消息,提示我的值未位于有效记录中。我已经在 MySQL 中成功执行了我的查询,但我认为我忽略了我的代码中的某些内容。
query = QtSql.QSqlQuery("select patient_id," +
"(SUM(IF(uom_id = 1, value, 0)) / SUM(IF(uom_id = 1, 1, 0))) AS `Average radius`," +
"(SUM(IF(uom_id = 2, value, 0)) / SUM(IF(uom_id = 2, 1, 0))) AS `Average Volume`," +
"(SUM(IF(uom_id = 3, value, 0)) / SUM(IF(uom_id = 3, 1, 0))) AS `Average SA`" +
"from measurements" +
"WHERE image_id = " + self.dbImage.id.toString() +
"AND status = 'A'" +
"GROUP BY patient_id", self.db)
query.next()
radius_acc = query.value(1).toDouble()
volume_acc = query.value(2).toDouble()
SA_acc = query.value(3).toDouble()
print('average of previously accepted measurements includes ' +
'radius = ' + str(radius_acc) +
'volume = ' + str(volume_acc) +
'SA = ' + str(SA_acc))
具体我想知道我向QSqlQuery输入查询的方式是否有问题?还是我尝试错误地使用 value(n) 方法?
如果这两种情况都不是,我敢打赌,我在查询中使用了错误的 self.dbImage.id.toString() 参数,在这种情况下,我明天就问同事。
【问题讨论】:
-
哦,不!不要用裸字符串连接构造查询。使用其中一个binding methods。如果没有这些,您的代码将对SQL Injection 开放。