Re: creating mysql functions using php
| From: | Andrew Martin | Date: | Thu, 09 Oct 2008 16:57:00 +0000 |
| Subject: | Re: creating mysql functions using php | ||
| References: | 1 2 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-45509@lists.php.net to get a copy of this message | ||
Hello,
Here's the procedural code. Surely it's possible to create a MySQL
function through the API?
$link = mysql_connect('localhost', 'root', 'pass');
mysql_select_db( 'test' );
$ret = mysql_query( 'DELIMITER $$ DROP FUNCTION IF EXISTS
anti_space$$
CREATE FUNCTION anti_space (
inString VARCHAR(1000),
replaceThis VARCHAR(1000),
replaceWith VARCHAR(1000)
)
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
DECLARE _outString VARCHAR(1000) DEFAULT TRIM(inString);
DECLARE _length INT DEFAULT LENGTH(_outString);
DECLARE _doneLoop BOOLEAN DEFAULT FALSE;
DECLARE _lengthNext INT DEFAULT 0;
IF ( _length != 0 ) THEN
WHILE (! _doneLoop AND _length != 0 ) DO
SET _outString = REPLACE( _outString, replaceThis, replaceWith );
SET _lengthNext = LENGTH(_outString);
SET _doneLoop = (_lengthNext = _length);
SET _length = _lengthNext;
END WHILE;
END IF;
RETURN _outString;
END$$
DELIMITER ;', $link );
if( !$ret ) echo mysql_error($link);
exit;
output:
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'DELIMITER $$ DROP FUNCTION IF EXISTS anti_space$$ CREATE
FUNCTION `anti_spac' at line 1
I've tried putting the delimiter call in it's own query() call, but no
luck so far.
Thanks,
Andy
2008/10/8 Chris <dmagick@gmail.com>:
> Andrew Martin wrote:
>>
>> Hello,
>>
>> Is it possible to create a mysql function from php, or is it command line
>> only?
>>
>> $db = get_db();
>>
>> $a = $db->query( "DELIMITER $$ " );
>> echo $db->error;
>> // You have an error in your SQL syntax; check the manual that
>> corresponds to your MySQL server version for the right syntax to use
>> near 'DELIMITER $$' at line 1
>> $a = $db->query( "
>> DROP FUNCTION IF EXISTS anti_space$$
>> CREATE FUNCTION anti_space (
>> inString VARCHAR(1000),
>> replaceThis VARCHAR(1000),
>> replaceWith VARCHAR(1000)
>> )
>> // You have an error in your SQL syntax; check the manual that
>> corresponds to your MySQL server version for the right syntax to use
>> near '$$ CREATE FUNCTION anti_space ( inString
>> VARCHAR(1000),
>> replaceThis VARCHA' at line 1
>
> What's your query method look like?
>
> What happens if you try using
>
> mysql_query($query);
>
> instead of $db->query($query) ?
>
> --
> Postgresql & php tutorials
> http://www.designmagick.com/
>
>