PHP와 MySQL로 웹 포트폴리오를 만들면 포럼이나 블로그를 만들었습니다. 나는 PHP에 꽤 괜찮은 편이지만 MySQL은 항상 나를 위해 문제가되어왔다. 왜냐하면 내가 전에 MySQL이나 다른 데이터베이스를 사용할 이유가 없기 때문이다. MySQL 오류 메시지는 내가 본 오류가 최악이다. 이것은 포럼/블로그에 새로운 글을 추가 할 때 사용하려고하는 쿼리입니다.MySQL에서 Declare 사용하기
START TRANSACTION;
DECLARE postKey int;
INSERT INTO posts(post_subject, post_content, post_date, post_by)
SELECT ?, ?, NOW(), user_id FROM users WHERE user_name = ? LIMIT 1;
SET postKey = LAST_INSERT_ID();
INSERT INTO juct_tags_posts(post_key, tag_key)
SELECT postKey, tag_id FROM tags WHERE tag_name = ? LIMIT 1;
INSERT INTO juct_tags_posts(post_key, tag_key)
SELECT postKey, tag_id FROM tags WHERE tag_name = ? LIMIT 1;
INSERT INTO juct_tags_posts(post_key, tag_key)
SELECT postKey, tag_id FROM tags WHERE tag_name = ? LIMIT 1;
COMMIT;
첫 번째 삽입은 post_data입니다. 다음 세 개의 삽입은 tag_id와 post_id의 접합 테이블에 대한 것입니다. 문제는 이것입니다. Prepare failed: (1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE postKey int;INSERT INTO posts(post_subject, post_content, post_date, pos' at line 1
나는이 문제의 원인을 잘 모른다. 또한, 쿼리가 준비되어있을 때 도움이된다면 다음과 같은 문자열로 설정하십시오.
START TRANSACTION;DECLARE postKey int;INSERT INTO posts(post_subject, post_content, post_date, post_by) SELECT ?, ?, NOW(), user_id FROM users WHERE user_name = ? LIMIT 1;SET postKey = LAST_INSERT_ID();INSERT INTO juct_tags_posts(post_key, tag_key) SELECT postKey, tag_id FROM tags WHERE tag_name = ? LIMIT 1;INSERT INTO juct_tags_posts(post_key, tag_key) SELECT postKey, tag_id FROM tags WHERE tag_name = ? LIMIT 1;INSERT INTO juct_tags_posts(post_key, tag_key) SELECT postKey, tag_id FROM tags WHERE tag_name = ? LIMIT 1;COMMIT;
이 Q & A를 참조하십시오. http://stackoverflow.com/q/9974325/1415724 및 관련 링크는 mysql.com 웹 사이트 https://dev.mysql.com/doc/refman/5.7/en/commit.html에서 확인할 수 있습니다. - https://dev.mysql.com/doc/refman/5.7/en/declare-handler.html –
고맙습니다. declare 키워드에 더 많은 것을 알게되었습니다. 비록 거래에서 변수를 선언하는 데 사용 된 키워드 일 뿐이지 만 나는 벗어나 더 많은 것을 알게되었습니다. 나는 sql을 모두 잘못보고 있으며 DOS와 비슷하게 보이고 프로그래밍 언어처럼 느껴진다. –
제프를 환영합니다. –