Tôi đang học các dây với PDO.PDO các tham số vị trí và được đặt tên như là một phần của truy vấn được chuẩn bị tương tự?
Đây là sql của tôi (số tham số có thể xuất hiện trong biến WHERE).
SELECT
ID, title
FROM
table
WHERE
something = ?
ORDER BY
:sort :dir
LIMIT
:start, :results
Đây là mã của tôi:
$query = $conn->prepare($sql);
if ($parameters) {
$i = 0;
foreach ($parameters AS $parameter) {
$i++;
$query->bindParam($i, $parameter);
}
}
$query->bindParam(':start', $pagination['start'], PDO::PARAM_INT);
$query->bindParam(':results', $pagination['results'], PDO::PARAM_INT);
$query->bindParam(':sort', $pagination['sort']);
$query->bindParam(':dir', $pagination['dir']);
$query->execute();
... và đây là ngoại lệ mà nó tạo ra:
Invalid parameter number: mixed named and positional parameters
là nó không thể kết hợp tham số vị trí và tên trong cùng một truy vấn? Hay tôi đang thiếu một cái gì đó?
Cảm ơn!
Tôi không chắc chắn về 'LIMIT', nhưng' ORDER BY' không chấp nhận tham số, ít nhất là không có trong phiên bản PHP mà tôi đang sử dụng (5.2.9) – jeroen
MySQL sẽ không chấp nhận * giá trị được trích dẫn * đối với các mệnh đề 'LIMIT' và' ORDER BY', điều sẽ xảy ra khi các phần giữ chỗ đó được thay thế. Nó không phải là một vấn đề PHP ... và loại làm cho câu hỏi của bạn tranh luận. – Charles