mysql create function
RelaXx
- php
hallo ich habe eigentlich ein mysql problem aber dazu gibt es leider keinen Themenbereich.
ich schaff es nich eine mysql function zu erstellen.
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
// Nutzen von Datenbank - Name ist hinterlegt in
// Konstante MYSQL_DATENBANK
$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die("Auswahl der Datenbank fehlgeschlagen");
$sql ='
delimiter |
create function test ()
begin
SELECT * FROM `t3gametest`;
end|
';
echo '<pre>';
echo $sql;
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
echo $db_erg;
}
echo '</pre>';
ich bekomm nur eine syntaxfehlermeldung
und weis nicht warum.
schon mal danke im vorraus für eure Hilfe
Hi!
ich schaff es nich eine mysql function zu erstellen.
Das geht nur mit der mysqli-Extension, denn die kennt mysqli_multi_query().
Lo!
Danke für die schnelle hilfe aber auch mysqli gibt mir eine fehlermeldung aus
$mysqli = new mysqli(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query ='
delimiter //
create function test ()
begin
SELECT * FROM `t3gametest`;
end;//
delimiter ;
';
//$query ='Select test ();';
if (!$mysqli->query($query)) {
printf("Errormessage: %s\n", $mysqli->error);
}
/* store first result set */
if ($result = $mysqli->use_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->close();
}
/* close connection */
$mysqli->close();
was ist beim erstellen der function noch falsch?
mfg RelaXx
Hi!
Danke für die schnelle hilfe aber auch mysqli gibt mir eine fehlermeldung aus
Übrigens, es geht doch mit der mysql-Extension.
Du machst aber andere Fehler:
create function test ()
begin
Lo!
ich hab jetzt eine procedure verwendet:
<?php
error_reporting(E_ALL);
$mysqli = new mysqli(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query ='
create procedure testo ()
begin
SELECT * FROM `t3gametest`;
end
';
if (!$mysqli->query($query)) {
printf("Errormessage: %s\n", $mysqli->error);
}
?>
ich bekomme die Fehlermeldung :
Errormessage: Access denied for user 'lrelaxxl_test'@'localhost' to database 'lrelaxxl_test'
wenn ich das "delimiter//"so einbaue
$query ='
delimiter //
create procedure testo ()
begin
SELECT * FROM `t3gametest`;
end;//
delimiter ;
';
bekomm ich eine syntaxfehlermeldung:
Errormessage: 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 // create procedure testo () begin SELECT * FROM t3gametest
; end;// ' at line 1
vielen dank nochmals für die hilfe
mfg RelaXx
Hi!
ich bekomme die Fehlermeldung :
Errormessage: Access denied for user 'lrelaxxl_test'@'localhost' to database 'lrelaxxl_test'
Dann sorge für die entsprechenden Rechte (CREATE ROUTINE wird benötigt). Durch Änderung der Syntax bekommst du sie jedenfalls nicht.
Lo!
ich bekomm nur eine syntaxfehlermeldung
Es ist ja schon schön, dass du geschrieben hast, um welche Fehlerart es sich handelt und obendrein auch den Code mitgeliefert hast – viele andere sind nicht in der Lage, über ein nichtssagendes "funzt nicht" hinauszukommen, und erwarten, dass Mama Forum ihnen daraufhin alles aus der Nase zieht.
Trotzdem: Falls du nicht darauf warten möchtest, dass irgendwer vor lauter Langeweile deinen Code in ein eigenes Skript einbaut, um herauszufinden, wo ungefähr in den drei Dutzend Zeilen ein Fehler sein könnte, solltest es du denjenigen, von denen du Hilfe möchtest, sehr viel einfacher machen und die Positionsangabe verraten, die bei der Fehlermeldung garantiert dabei war.
Davon unabhängig:
Auch mysql_connect() und mysql_select_db() können Fehler liefern. Letzteren fragst du zwar ab, kümmerst dich aber nicht um die Erklärung aus mysql_error(). Bei mysql_connect() machst du gar nichts.
Baue beides so, wie du es bei mysql_query() schon richtig gemacht hast.
Weiterhin solltest du den Fehler, den mysql_error() liefert, zumindest auf öffentlichen Systemen nicht in die Webseite ausgeben, sondern mittels error_log() ins Fehlerprotokoll des Servers schreiben.
Erstens kannst du Fehler, die bei Besuchern deiner Seiten passieren, nicht sehen, wenn du sie nicht protokollierst (und erwarte nicht, dass sich irgendwer darum kümmert, dir eine Meldung zu schicken). Zweitens gehen solche Interna da draußen niemanden etwas an.
hallo ich habe eigentlich ein mysql problem aber dazu gibt es leider keinen Themenbereich.
schon mal danke im vorraus für eure Hilfe
hallo ,selfphp-Forum ist auch eine gute Adresse
mffg