2012-04-12 48 views
6

Tôi có một MySQLvariablethực hiện truy vấn mysql trong biến

@query = CONCAT('INSERT INTO history VALUES (',1,',',50,',UTC_TIMESTAMP()'); 

Tôi muốn thực hiện báo cáo kết quả chèn mặt trong biến.

+0

hãy thử tuyên bố chuẩn bị –

+0

Vui lòng cho tôi ví dụ – Avinash

+0

xem câu trả lời của tôi, tôi nghĩ rằng nó sẽ hoạt động –

Trả lời

12

Trước tiên, bạn phải chuẩn bị báo cáo kết quả sử dụng PREPARE và sau đó sử dụng EXECUTE

Xem ở đây: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

Cái gì như:

SET @query = CONCAT("INSERT INTO history VALUES (",1,",",50,",UTC_TIMESTAMP()"); 

PREPARE stmt1 FROM @query; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
+0

Tôi gặp lỗi này # 1064 - Bạn có lỗi trong cú pháp SQL; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho cú pháp đúng để sử dụng gần 'EXECUTE stmt_name' tại dòng 2 – Avinash

+0

Thử chỉnh sửa của tôi, sẽ không sao. – mattytommo

+0

Cảm ơn @mattytommo. – Avinash

2
Set @query = CONCAT("INSERT INTO history VALUES (",1,",",50,",UTC_TIMESTAMP()"); 

và sau đó

PREPARE stmt_name FROM @query 

và cuối cùng

EXECUTE stmt_name 
-2

loại bỏ các CONCAT(), nó không phải làm bất cứ điều gì ngoại trừ phát sinh lỗi vì nó đang cố gắng nối một chuỗi với không có gì khác.

+0

Nó thực sự là concatenting 5 yếu tố, nó sẽ không được bất kỳ lỗi => câu trả lời của bạn là xấu -> không trả lời đã trả lời câu hỏi - nhìn vào phần 'mới' và hiển thị các kỹ năng của bạn :) – Toumash

+0

câu trả lời phi logic. –

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