Hoe implementeer ik een MySQL functie op afstand ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Aad B

Aad B

04/07/2010 12:28:19
Quote Anchor link
Ik moet een MySQL functie implementeren en ik kan niet bij de MySQL command line (waar de drie regels prima geimplementeerd zijn). Ik probeer dus wat php code en krijg een foutmelding: 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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $q1
= mysql_query("delimiter //");                    
    $q2 = mysql_query("CREATE FUNCTION seq(seq_name char(20)) returns int begin  UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;  RETURN last_insert_id(); end//");                    
    $q3 = mysql_query("delimiter ;");                    
        
                        
    if(!$q1 && !$q2 && !$q3 )
    {

        echo 'Fout bij installeren query´s: <br />';
        echo mysql_error();
        
        exit();
    }

?>
Gewijzigd op 04/07/2010 12:33:28 door Aad B
 
PHP hulp

PHP hulp

26/04/2024 06:41:59
 
Noppes Homeland

Noppes Homeland

04/07/2010 12:54:19
Quote Anchor link
een environment variabele set je!

dus SET delimiter //

en je doet er verstandiger aan per afgevuurde query foutafhandeling toe te passen, zoals je het nu doet heb je alleen de foutmelding van $q3, terwijl op voorgaande queries ook een fout kan optreden.

Edit:

Overigens als je geen sql-prompt hebt dan heb je vast wel een of ander panel verkregen waarbij je je database kunt beheren.
Gewijzigd op 04/07/2010 13:02:52 door Noppes Homeland
 
Aad B

Aad B

04/07/2010 13:25:13
Quote Anchor link
@Noppes: Dank voor de tip en foutafhandeling per query heb ik even weggelaten omdat ik alleen even quick en dirty deze funtion wilde creeeren. Bedoel je met environment variabele zetten dus voordat ik command line mysql opstart? In MYSQL commandline op mijn testomgeing ging het prima:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
mysql> delimiter //
mysql> delimiter ;
// met SET verschijnt een foumelding
mysql> set delimiter //
    -> ;
ERROR 1193 (HY000): Unknown system variable 'delimiter'
mysql>

Dus zonder SET wordt geaccepteerd en het werkt!
Op OS heb niet getest maar wellicht bedoel je dat ??
[root@webserver12]export delimiter=//
??
Gewijzigd op 04/07/2010 13:26:03 door Aad B
 
Noppes Homeland

Noppes Homeland

04/07/2010 13:50:46
Quote Anchor link
Nee dit bedoelde ik niet:
Op OS heb niet getest maar wellicht bedoel je dat ??
[root@webserver12]export delimiter=//

In veel gevallen moet je SET environment variabele doen, voor delimiter op de sql-prompt is dat niet nodig.

Volgens mij hoef je als je die functie wilt creeren via php helemaal niets te doen met de delimiter (?)
Is al weer een tijdje geleden, nomaal creeer je dit soort zaken niet met een php-script
 
Aad B

Aad B

04/07/2010 14:25:58
Quote Anchor link
@Noppes, klopt. Het is uitgevoerd en wel door de delimiter regels en de // in de 2e regel te verwijderen en opnieuw het script uit te voeren. Ik krijg nu geen foutmelding meer dat de functie niet bestaat en de functie levert nu de gewenste functionaliteit. De delimiter heb je kennelijk alleen nodig in MySQL command line. Ik creeer dit soort zaken ook normaliter niet met een php-script maar gewoon als root op de command line. Dit met een php script is behelpen hoor...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.