2016-10-14 8 views
-1

で関数を作成するには、私はPHPを使用してDBのMySQLで関数を作成するには、このコードを持っている:はどのようにphpMyAdminのmysqlの

DROP FUNCTION IF EXISTS fnStripTags; 
    DELIMITER | 
    CREATE FUNCTION fnStripTags(Dirty varchar(4000)) 
    RETURNS varchar(4000) 
    DETERMINISTIC 
    BEGIN 
     DECLARE iStart, iEnd, iLength int; 
     WHILE Locate('<', Dirty) > 0 And Locate('>', Dirty, Locate('<', Dirty)) > 0 DO 
      BEGIN 
      SET iStart = Locate('<', Dirty), iEnd = Locate('>', Dirty, Locate('<', Dirty)); 
      SET iLength = (iEnd - iStart) + 1; 
      IF iLength > 0 THEN 
       BEGIN 
       SET Dirty = Insert(Dirty, iStart, iLength, ''); 
       END; 
      END IF; 
      END; 
     END WHILE; 
     RETURN Dirty; 
    END; 
    | 
    DELIMITER 

まあ、動作していないので、私はphpMyAdminの中で、この関数を作成する方法を知りたいです。 $$を追加するようなものをいくつか変更しなければならないことは分かっていますが、方法や場所はわかりません。

私は、MySQLの専門家ではないよ:/

はあなたのすべてをありがとうございました。

+0

エラーメッセージが表示されますか? – Philipp

+0

@Philipp私はPHPでそれをやってもエラーは出ませんが、うまくいきません... –

+0

mysqlコンソールから直接試すことができますか? – Philipp

答えて

0

まず、構文が正しいことを確認します(異なるクライアントまたはローカルデータベースを使用している可能性があります)。苦労している場合は、件名のofficial MySql documentationを読んでください。これは非常に徹底的で、理解を深めるのに役立ちます(特に、データベースを自動化するのが新しい場合)。

システムの別のバージョンで構文が正しく動作すると仮定すると、phpMyAdminはエラーを出すべきではありません。コードを正常に動作させることができない場合、phpMyAdminにはネイティブの "Create Routines"ツールがあります。このツールを使用して構文を自動化することができます。

あなたのコードに間違いがあるかぎり、8行目のネストされたロケートは少し外れているようです。ストリップタグメソッドを実行しようとしているようですが、おそらく正規表現マッチと置き換えメソッドはあなたの努力を単純化します。多くのMySQL文字列関数(hereを見つけるための参照)があり、あなたのメソッドで創造的になる!

+0

ありがとうございました。私はその文書を見るでしょう。そして、私はもう一度何かを言います。ありがとうございました。私はあなたの答えを投票するべきですが、私はできません。 :/ –

関連する問題