Trong ứng dụng hiện tại của chúng tôi Tôi có một báo cáo có chứa một cái gì đó như:Làm thế nào tôi có thể lưu trữ một staement có điều kiện PHP trong cơ sở dữ liệu để sử dụng sau này?
if($foo == 3 || $bar > 3) {
$e = someFunction();
};
nhưng đối với một khách hàng khác nhau mà cùng một biểu hiện có thể là:
if($foo == 3 || $bar == 5 && $foobar != 9) {
$e = someFunction();
};
Có một cách thẳng thắn để lưu trữ các hai biểu thức khác nhau, chỉ cần
$foo == 3 || $bar > 3 OR $foo == 3 || $bar == 5
bit trong cơ sở dữ liệu (MySQL) vì vậy tôi không phải mã cứng tất cả các quy tắc này của khách hàng hoặc duy trì các phiên bản ứng dụng khách của cùng một báo cáo. Tôi đang cố gắng tìm ra nếu tôi có thể thiết lập một biến o thay thế các điều kiện. Một cái gì đó như:
$conditions = $row_rsConditions['condition_row'] //Get $foo == 3 || $bar > 3 from the DB and store it as $conditions
if($conditions) {
$e = someFunction();
};
Có thể có> 100 khách hàng khác nhau và mỗi khách hàng có thể/sẽ có một bộ biểu thức khác. Tôi không chắc chắn về cách tốt nhất để làm điều này.
CẬP NHẬT:
Tôi nghĩ rằng tôi hiểu được vấn đề sử dụng eval PHP() chức năng. Nhưng vì số lượng các kết hợp có thể tôi đang hướng tới việc sử dụng DB để lưu trữ các điều kiện (không chắc chắn về việc sử dụng eval())
Nó có tạo sự khác biệt (an toàn hơn) nếu không có giao diện người dùng ghi vào trường điều kiện/bảng? Nó có thể là một cái gì đó chúng tôi quản lý về phía chúng tôi một mình.
Làm thế nào để lưu mã vào cơ sở dữ liệu và sau đó tải và thực thi bằng cách sử dụng 'eval' ? Thoug có thể có vấn đề an ninh khi ai đó tiêm cơ sở dữ liệu và làm cho bạn đánh giá mã của mình. – Nobody
Sau đó, câu hỏi đặt ra là, trong hoàn cảnh nào, các toán tử bên trong điều kiện đó có thể thay đổi? – Deele
Tôi nghĩ rằng thiết kế rất xấu để lưu trữ logic trong cơ sở dữ liệu, cơ sở dữ liệu chỉ nên được sử dụng cho dữ liệu – Fivell