0

プロシージャのINSERTが間違っています。この挿入は、 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

この値を追加したい:

call CreateTable('dcf57shasdsd5723m','dcf',2,60201,'My article is',444,'New Title','Ethan',1,2);

どこ:

  1. md5 -dfc7shgsnsty3475723m
  2. table_name -dfc
  3. UserId -444
  4. タイトル-新しいタイトル
  5. ニック-イーサン
  6. CommentsId -2
  7. -60201
  8. IdLength -1
  9. 接尾辞-2
  10. コンテンツ-私の記事は
4

1 に答える 1

1

INSERT INTOでは、列をmd5、UserId、Parent、...の順序で宣言します。ただし、値では、md5とUserIdの値が入れ替わります:'、UserId、'、 "'、md5、'"、'、親

于 2012-08-02T08:41:03.007 に答える