我試圖通過PDO基數違規:1241操作數應包含1列(S)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
我該怎麼辦?
您的SQL語法錯誤。您不能將大於/小於運算符應用於運算符兩邊的多個列,例如'v.rel_x> =?,?,?,?'是沒有意義的,並且會給您一個錯誤。 – Dan