私はこの問題を抱えているので、私はPHP内でユーザ定義の関数を作成しました。しかしそれにはいくつかの問題があります。詳しく教えてください。 この関数を作成したとします。PHP内でユーザ定義のmysql関数を作成する
<?php
include 'db_connect.php';
$sql="DROP FUNCTION IF EXISTS testf";
$result=mysql_query($sql) or die (mysql_error());
$sql="CREATE FUNCTION testf() RETURNS text
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE Output text;
set Output='zzz';
RETURN output ;
END";
$result=mysql_query($sql) or die (mysql_error());
$sql="SELECT testf()";
$result=mysql_query($sql) or die (mysql_error());
$row=mysql_fetch_array($result);
echo nl2br($row[0]);
?>
上記はうまくいきます。
が、次のようにエラーがあります。
<?php
include 'db_connect.php';
$sql="DROP FUNCTION IF EXISTS testf";
$result=mysql_query($sql) or die (mysql_error());
$sql="CREATE FUNCTION testf() RETURNS text
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE Output text;
DECLARE name text;
set Output='zzz';
set name='SELECT t_name for tbl_names where id=1';
RETURN output ;
END";
$result=mysql_query($sql) or die (mysql_error());
$sql="SELECT testf()";
$result=mysql_query($sql) or die (mysql_error());
$row=mysql_fetch_array($result);
echo nl2br($row[0]);
?>
私はこのエラーを取得しています:あなたは、あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が 'SELECT t_Name FROM tbl_name WHERE id = 1; RETURN出力。 END 'at 9行 誰も解決策を提案できますか?私は立ち往生しています。 私は 'SELECT t_name for tbl_names where id = 1'というクエリを実行し、その結果をパラメータとして渡すことができます。はい、うまくいくが、私はそれを避けたい。