Hoe implementeer ik een MySQL functie op afstand ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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();
}
?>
$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
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.
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
Code (php)
1
2
3
4
5
6
7
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>
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
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
@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...