wrong INSERT in Procedure . This insert add all column without UserId
----------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
DROP PROCEDURE IF EXISTS CreateTable $$
CREATE PROCEDURE `CreateTable`
(
md5 VARCHAR(255),table_name VARCHAR(255),CommentsId INT(11),
Parent VARCHAR(100), Content TEXT,UserId INT(11), Title VARCHAR(255),
Nick VARCHAR(20), IdLength INT(11), suffix INT(11)
)
BEGIN
DECLARE full_table_name varchar(255);
SET @SQL=CONCAT('SELECT COUNT(\'X\') INTO @COUNTER FROM INFORMATION_SCHEMA.COLUMNS ',
'WHERE TABLE_NAME like \'', table_name, '%\'');
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET full_table_name= table_name;
SET @SQL=CONCAT('CREATE TABLE IF NOT EXISTS ', full_table_name, ' LIKE CommentsPattern');
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @SQL=CONCAT('INSERT INTO ', full_table_name,'(md5,UserId, Parent, Content, CommentsId, Title, Nick,IdLength,suffix)',
'values(',UserId,',"',md5, '",', Parent, ',"', Content, '",',CommentsId,',"',Title,'","',Nick,'",', IdLength, ',',suffix, ')');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
END
I want add this values:
call CreateTable('dcf57shasdsd5723m','dcf',2,60201,'My article is',444,'New Title','Ethan',1,2);
Where:
- md5 – dfc7shgsnsty3475723m
- table_name – dfc
- UserId – 444
- Title – New Title
- Nick – Ethan
- CommentsId – 2
- Parent – 60201
- IdLength – 1
- suffix – 2
- Content – My article is
In the INSERT INTO you declare the columns in the order: md5, UserId, Parent,…
However, in the values the md5 and UserId values are switched: ‘,UserId,’,”‘,md5, ‘”,’, Parent