DROP PROCEDURE IF EXISTS updateimage;
CREATE PROCEDURE updateimage
(
$id int, 
$tablename varchar(20),
$img varchar(500)
)
BEGIN
IF $img !="" THEN
 update $tablename  set litpic=$img where aid=$id;
END IF;
END;这一句有问题,
update $tablename  set litpic=$img where aid=$id;
是 $tablename 的问题

解决方案 »

  1.   

    MYSQL不支持表名做为变量。
    你需要通过
    PREPARE
    EXECUTE
    DEALLOCATE PREPARE
    来实现。
      

  2.   

    DROP PROCEDURE IF EXISTS updateimage;
    CREATE PROCEDURE updateimage
    (
    $id int,  
    $tablename varchar(20),
    $img varchar(500)
    )
    BEGIN
    IF $img !="" THEN
    set @sql = concat('update ',$tablename,'  set litpic=\'',$img,'\' where aid=',$id);
    PREPARE stmt1 FROM  @sql;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
    END IF;
    END;
      

  3.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html