现在我有一局SQL,我想根据传入的参数加入条件,然后动态的执行这个sql,请问语法是怎么样的?

解决方案 »

  1.   

    在百度或者GOOGLE里面搜索关键字 “mysql 预处理语句
      

  2.   

    但是我得先,根据传入的参数,拼接完sql然后在执行,拼接的语法直接用+会出错
      

  3.   

    现在我有各一条sql,如select * from <table>,根据传入参数,拼接sql,参数1不为空,直接sql+参数对应条件,然后执行这条sql
    请问语法是怎么样的?
      

  4.   

    我想已经可以了,但是为什么这样连接字符有问题
    set f_tmp = "select * from table ..."&
                +".......";
    编译不报错,运行报错,我现在把很长的一段sql全部写做一行,然后判断输入参数,在
    set f_tmp = concat(f_tmp,' and a.user_id = ', fi_user_id);
    最后
        set @f_sql = f_tmp;    PREPARE   stmt1   FROM   @f_sql;
        EXECUTE   stmt1;
    字符连接的语法是如何的?
      

  5.   

    本帖最后由 yueliangdao0608 于 2008-11-14 09:20:57 编辑
      

  6.   

    连接字符串用CONCAT,在用
    prepare s1 from @x;
          execute s1;
    执行
      

  7.   

    谢谢大家了,这个问题搞明白了,在多问一下,我现在传入的有中文参数,我已经在传入参数里加入了CHARACTER SET utf8,而且我在调试时,传入的也是中文,但在拼接sql那报错,error code [1366]; Incorrect string value: '\xE6\xB5\xB7\xE5\x8D\x97...' for column 'f_tmp',应该就出在拼接那,请问,拼接还可以在转utf8吗?
      

  8.   

    呵,不好意思,忘记设置sql的变量为utf8了,可以了。