2016-09-13 26 views
7

đúng MySQLi cú pháp truy vấn tham số từ http://php.net/manual/en/mysqli.quickstart.prepared-statements.php:Tại sao thư viện MySQLi không hỗ trợ tên tham số?

$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"); 
$stmt->bind_param("i", $id); 

Nhưng không bao giờ cái gì đó như:

$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (:id_value)"); 
$stmt->bind_param("i", "id_value", $id); 

Nó xuất hiện với tôi rằng named parameter thay thế là một tính năng hợp lý để được thực hiện ở cấp API. Tôi ngạc nhiên khi MySQLi chỉ triển khai unnamed parameters trong thư viện.

Có lý do hợp lệ không? Nó không có ý nghĩa với tôi, nhìn thấy cách PDO, DQL, ORM tất cả đã thông qua các tham số được đặt tên trong truy vấn của họ.

Tôi hy vọng đó không phải là trường hợp "Chúng tôi lười biếng & không muốn" trên một phần của nhà phát triển MySQLi. Tôi tin rằng phải có lý do chính đáng và tôi đang tìm lý do đó, hoặc một cách để tìm ra lý do đó. Lý do cho các tham số được đặt tên không được triển khai trong thư viện phần mở rộng MySQLi.

+1

Cơ sở dữ liệu mysql không? Nó đã chuẩn bị truy vấn nhưng không đặt tên tham số. –

+0

mm ngoài chủ đề, cờ quá rộng và cờ dựa trên ý kiến. Tôi không mong đợi sự đa dạng như vậy trong những lá cờ gần gũi. – Dennis

+1

Vâng Dennis; bạn chắc chắn sẽ nhận được câu trả lời từ một người quen thuộc với sự phát triển cốt lõi của PHP.net, và lý do cơ bản của nó là tại sao họ làm điều đó Đó là cách duy nhất bạn sẽ nhận được một câu trả lời cụ thể. Tôi cho một, không phải là một trong những người ;-) Ít nhất tôi đã cho bạn đúng thời điểm trong ngày ở đây. –

Trả lời

0

Lý do cho việc này khá đơn giản, họ không lười biếng và có thể họ muốn có tính năng đó, nhưng đối với họ, điều đó có thể không thực hiện được và : thực sự có thể là điều gì đó.

Mặc dù, tôi rất khuyên bạn không nên sử dụng MySQLI và chuyển sang PDO vì nó dễ dàng hơn và đơn giản hơn với những người như tôi và bạn hiểu.

Các vấn đề liên quan