0

我试图通过 pdo 运行这段代码

db::query("SELECT v.id, v.rel_x, v.rel_y FROM p_villages v WHERE v.field_maps_id=3
            AND ISNULL(v.player_id) AND (v.rel_x >= ?,?,?,? AND v.rel_x <= ?,?,?,?)
            AND (v.rel_y >= ?,?,?,? AND v.rel_y <= ?,?,?,?)
            AND v.rand_num > 0 ORDER BY v.rand_num LIMIT 1",array(1,2,3,3,1,2,3,3,1,2,3,3,1,2,3,3));

但我发现了这个错误

Warning: PDOStatement::execute(): SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s) \

所以,我需要输出查询SELECT v.id, v.rel_x, v.rel_y FROM p_villages v WHERE v.field_maps_id=3 AND ISNULL(v.player_id) AND (v.rel_x >= 1,2,3,4 AND v.rel_x <= 1,2,3,4) AND (v.rel_y >= 1,2,3,4 AND v.rel_y <= 1,2,3,4) AND v.rand_num > 0 ORDER BY v.rand_num LIMIT 1,我想在参数中传递这些参数的每个参数,这里是 16

我应该怎么办 ?

4

1 回答 1

1

这个:v.rel_y <= ?,?,?,?

看起来很奇怪。

绑定参数必须是自包含的,您不能通过一个以上的比较来构建比较的右侧或左侧部分。

即,如果你的意思是x >= 5.1,你不能把x >= ?.?2 个参数传递给 pdo 语句。然后你必须通过x >= ?然后bindValue(5.1);

于 2013-10-03T09:50:32.470 回答