请教这个select语句如何修改:$wuyn_s1='select * from qiyn_a where hztopy(z1)="'.hztopy($f).'"'.'order by rand()';其中hztopy是一个汉字转拼音的函数,这个函数肯定没什么问题,如果去掉函数,语句也能运行,但是只能得出与$f相同的汉字的数据,谐音的数据出不来。请教如果要出来谐音的数据该如何修改?

解决方案 »

  1.   

    你用的什么数据库?我的mysql中没有这个函数。
      

  2.   

    自己用php编写的函数,并非mysql函数,函数也测试通过的,所有函数没有问题,但不知道php函数能不能用于select语句中,如果不能用,如何修改,或提供一个思路,谢谢!
      

  3.   

    自己写的php肯定不可以用于select中的,你数据库中保存的是拼音还是汉字?如果是拼音的话"select * from qiyn_a where z1='".hztopy($f)."' order by rand()"; 
      

  4.   

    是PHP的函数,恐怕不能得到结果吧。
    $wuyn_s1='select * from qiyn_a where hztopy(z1)="'.hztopy($f).'"'.'order by rand()';
    这个语句中hztopy($f)会得到执行,加入结果是aaaaa
    那么最终在数据库执行的语句是:select * from qiyn_a where hztopy(z1)=‘aaaaa’ order by rand()你看,相当有一个PHP的函数在MySQL中执行,那当然不行了。
      

  5.   

    自己用php编写的函数,并非mysql函数,函数也测试通过的,所有函数没有问题,但不知道php函数能不能用于select语句中,如果不能用,如何修改,或提供一个思路.
    $wuyn_s1='select * from qiyn_a where hztopy(z1)="'.hztopy($f).'"'.'order by rand()'; 
    这个语句中hztopy($f)会得到执行,加入结果是aaaaa 
    那么最终在数据库执行的语句是:select * from qiyn_a where hztopy(z1)=‘aaaaa’ order by rand() 
      

  6.   

    在数据库里面也写一个hztopy函数
      

  7.   

    同意
    MySQL也支持自定义函数
      

  8.   

    如果你的编码格式是GBK的 那么这个方法是最简便的。如果是UTF-8 可能PHP处理会更简单一点