Re: creating mysql functions using php

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>:
> 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/
>
>

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux