Đây là một ví dụ trong đó sử dụng câu lệnh chuẩn bị thực sự giúp bạn đỡ rắc rối.
Trong MySQL, để chèn giá trị null, bạn phải chỉ định nó tại INSERT
thời gian hoặc bỏ trống trường yêu cầu phân nhánh bổ sung:
INSERT INTO table2 (f1, f2)
VALUES ('String Value', NULL);
Tuy nhiên, nếu bạn muốn chèn một giá trị vào trường đó, bây giờ bạn phải phân nhánh mã của mình để thêm các dấu nháy đơn:
INSERT INTO table2 (f1, f2)
VALUES ('String Value', 'String Value');
Các câu lệnh soạn sẵn sẽ tự động làm điều đó cho bạn. Họ biết sự khác biệt giữa string(0) ""
và null
và viết truy vấn của bạn một cách thích hợp:
$stmt = $mysqli->prepare("INSERT INTO table2 (f1, f2) VALUES (?, ?)");
$stmt->bind_param('ss', $field1, $field2);
$field1 = "String Value";
$field2 = null;
$stmt->execute();
Nó thoát khỏi các trường của bạn cho bạn, đảm bảo rằng bạn không quên ràng buộc một tham số. Không có lý do gì để ở lại với mysql
sự mở rộng. Sử dụng mysqli
và đó là báo cáo chuẩn bị
thay thế. Bạn sẽ tự cứu mình một thế giới đau đớn.