2008-11-20 12 views
5

thể trùng lặp:
PDO Prepared StatementsCó cách nào để xem một truy vấn đã chuẩn bị vì nó sẽ được thực hiện trên cơ sở dữ liệu không?

Tôi đang sử dụng phần mở rộng mysqli trong PHP và tôi tự hỏi, là có thể bất cứ cách nào để xem một truy vấn chuẩn bị vì nó sẽ được thực thi trên máy chủ, vd Truy vấn là một cái gì đó như thế này

select * from table1 where id = ? and name = ? 

nhưng tôi muốn nhìn thấy các truy vấn sau khi các giá trị được điền vào, như thế này:

select * from table1 where id = 20 and name = "John" 
+0

Điều gì xảy ra khi bạn var_dump() đối tượng mysqli_stmt? –

Trả lời

2

Duplicate của PDO Prepared Statements

Câu trả lời ngắn: không có. Truy vấn được chuẩn bị sẽ không bao giờ được chuyển đổi thành truy vấn bạn mong đợi. Nó được thực hiện trực tiếp bởi máy chủ cơ sở dữ liệu. Bạn có thể sử dụng nhật ký truy vấn của mysql hoặc hàm không có giấy tờ của PDO debugDumpParams, nhưng cả hai chỉ là xấp xỉ.

+2

Trên thực tế nếu bạn bật ghi nhật ký truy vấn MySQL, nó * ghi nhật ký truy vấn đã chuẩn bị với các giá trị tham số được nội suy vào đó. Kỳ quặc! –

+0

Thứ lạ đó. – troelskn

0

Xem nó ở đâu? Nếu đó là mã của bạn, bạn có truy vấn và bạn có các tham số đã chuẩn bị, hãy ghi chúng một cách riêng biệt hoặc thay thế trong chuỗi truy vấn ban đầu. Nếu ràng buộc sẽ không thành công, bạn sẽ nhận được một lỗi, nếu không bạn sẽ mong đợi các giá trị tương tự được "lấp đầy" như bạn đã chỉ định chúng.

0

của nó đường đi hầu hết các lần tôi gỡ lỗi cần phải nắm vững mysql:...

$ q = "select * from table1 where id =" $ id "và name =" $ name; echo $ q;

Đầu ra tạo tất cả các biến được gán cho truy vấn.

Hy vọng tôi đã hiểu chính xác bạn, những gì bạn muốn.

+0

Tôi nghĩ rằng anh ấy có nghĩa là khi anh ấy chuẩn bị "chọn * từ table1, nơi id =? Và name =?" và sau đó thực thi nó cung cấp các tham số $ id và $ name. –

+0

Trừ khi '$ name' là một số, truy vấn này sẽ thất bại do tham số chuỗi không được trích dẫn. – T30

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