Tôi đang cố gắng tạo một trừu tượng cơ sở dữ liệu rất đơn giản, một phần của nó bằng cách sử dụng truy vấn đã chuẩn bị.thực hiện truy vấn được chuẩn bị đơn giản trong PHP
Bây giờ, tôi có một hàm lấy một chuỗi truy vấn và một mảng các giá trị như thế này:
$query = "SELECT `first_name`, `last_name` FROM ::table_name WHERE `id` = :id"
$values = array(
'table_name' = $this->table_name,
'id' = $user_id,
);
này sẽ tạo ra một truy vấn như thế này:
SELECT `first_name`, `last_name` FROM `sometablename` WHERE `id` = '1234'
vấn đề của tôi là thế này:
Tôi đang sử dụng preg_replace_callback
để lấy :: số nhận dạng và: số nhận dạng từ chuỗi truy vấn và sau đó gửi đến một hàm khử trùng. Vấn đề là, tôi cũng cần gửi mảng giá trị, để hàm có thể so khớp từ regexp, lấy mục trong mảng giá trị bằng khóa đó, thoát khỏi giá trị, bọc nó vào dấu ngoặc kép và sau đó trả về nó .
Nhưng tôi không thể chuyển bất kỳ thông tin bổ sung nào vào cuộc gọi lại. Tôi có thể sử dụng biến tĩnh riêng nhưng điều này là rất hacky.
Cách tiếp cận khác cho điều này là gì?
điều này thật hoàn hảo! Tôi ước tôi đọc điều này trước khi tôi sử dụng một lớp học lớn để xử lý nó ... Tôi đoán tôi sẽ thay đổi nó sang phiên bản đơn giản này. Cảm ơn bạn! –
Hoặc bạn thực sự có thể sử dụng http://php.net/manual/en/function.preg-replace-callback.php. Tôi không thích ý tưởng đưa mã vào chuỗi. – mpen
@Mark - Carson đặc biệt nói rằng 'preg_replace_callback()' không hoạt động đối với anh ta, bởi vì bạn không thể chuyển các tham số phụ vào hàm gọi lại. Sử dụng 'preg_replace()' với tùy chọn 'e' là công việc xung quanh. Cũng lưu ý rằng 'preg_replace_callback()' sử dụng mã được đánh giá, vì vậy nó chỉ là bản chất của tình huống. – zombat