Tôi đang tự hỏi những gì tuyên bố của các loại dữ liệu trong bindParam()
(hoặc bindValue()
) được sử dụng cho ...PHP PDO :: bindParam() kiểu dữ liệu .. nó hoạt động như thế nào?
Ý tôi là, tôi nghĩ rằng nếu tôi xác định một đối số nguyên (PDO::PARAM_INT
), đối số phải được chuyển đổi thành một số nguyên, chẳng hạn như
$delete->bindParam(1, $kill, PDO::PARAM_INT);
// should work like
$delete->bindParam(1, (int)$kill);
hoặc ít nhất là lỗi nếu đối số không thuộc loại được khai báo. Nhưng đây không phải là trường hợp.
Googling xung quanh, tôi thấy rằng trong kho lưu trữ php.net:
Hi all,
Tôi hiện đang làm việc trên PDO. Chính xác trên hàm bindParam(). Dữ liệu tham số thứ ba có vẻ ở đây để buộc loại giá trị? Nhưng khi tôi cố gắng:
$sql = "INSERT INTO produit (idproduit, nom, marque) VALUES (NULL, :nom, :marque)"; $stmt = $dbh->prepare($sql); $nom = 'Testarossa'; $marque = 'Ferrari' ; $stmt->BindValue(':marque',$marque) ; $stmt->BindParam(':nom',$nom,PDO::PARAM_INT) ; $stmt->execute(); $nom = '250 GTO' ; $stmt->execute(); ?>
tôi đã mong có hoặc là một lỗi PHP hoặc một interger trong cơ sở dữ liệu của tôi. Nhưng trong DB của tôi, tôi có:
22 Testarossa Ferrari 23 250 GTO Ferrari
Nó có nghĩa là nó không thay đổi nếu tôi có tham số thứ ba hay không. Hoặc có lẽ tôi nhớ điều gì đó. Ai đó có thể giúp tôi nhiều hơn? Hoặc chỉ ai đó có thể nói với tôi nơi tôi có thể tìm thấy thông tin về điều đó.
Kính trọng,
Cyruss
Đó là chính xác hoàn cảnh của tôi. Suy nghĩ của tôi đi sai ở đâu?
"Tôi đã mong đợi có lỗi PHP hoặc một trình kết nối trong cơ sở dữ liệu của tôi". tôi quá – VolkerK