Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

MySQL Stored Procedures

Diskussion: MySQL Stored Procedures im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo zusammen... habe mal ein wenig rumgeforscht und meine aktuelle Applikation auf SPs umgestellt. Der Aufruf von SPs die ...

Antwort
Alt 28.04.09, 13:55   #1 (permalink)
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
MySQL Stored Procedures

Anzeige

Hallo zusammen...
habe mal ein wenig rumgeforscht und meine aktuelle Applikation auf SPs umgestellt.
Der Aufruf von SPs die mir ein Resultset zurück geben klappen alle.
Jedoch habe ich auch SPs die Datensätze schreiben, diese klappen widerrum mit PHP nicht. Wenn ich die SPs per Navicat anstoße, schreiben diese mir den gewünschten Datensatz.

Aber hier mal ein wenige Quellcode.
Meine Methode zum Ausführen der SP:

PHP-Code:
public function executeMySQLSP($Spname$Parameter)
    {
        try{
            
$mysqli = new mysqli($this->host$this->username$this->password$this->database);
            
            
$query "Call ".$Spname."(".$Parameter.")";
            if (
$result $mysqli->query($query)) 
            {
                return 
$result;
            }
            
mysqli_close($mysqli);
        }
        catch(
Exception $e){
            echo 
"<div id='error'><b>Fehler: </b><br>".$e->getMessage()."<br><br><b>Datei:</b><br>'".$e->getFile()."'<br><br><b>Zeile:</b><br>".$e->getLine().'</div>';
        }    
    } 
Hiermit rufe ich die SP auf, bzw. führe diese aus:
PHP-Code:
$database->executeMySQLSP("AddOrdnerBild","'".$bildname."','".$bildname."', '".$bildtyp."','".ceil($bildsize)."','".$PicHoehe."','".$PicBreite."','".$pfad."','".str_replace(".".$bildtyp,""$bildhash)."',".$_SESSION['UsrID'].",".$AlbumID.", '".$database->GetSetting('THUMBNAIL_PATH').str_replace(".".$bildtyp,""$bildhash)."'"); 
Wie gesagt, bei SPs die mir ein Resultset zurück liefern klappt alles einwandfrei, habe ich irgendwo einen Denkfehler?

-- Edit --
Also ich habe es eben noch einmal validiert.
Der Debugger springt in die Zeile:
PHP-Code:
if ($result $mysqli->query($query)) 
übergeht die Prüfung aber und gibt kein Resultset zurück (was ja auch klar wäre, da nichts zurück gegeben wird.)
Habe die Funktion nun wie folgt abgeändert:
PHP-Code:

    
public function executeMySQLSP($Spname$Parameter)
    {
        try{
            
$mysqli = new mysqli($this->host$this->username$this->password$this->database);
            
            
$query "Call ".$Spname."(".$Parameter.")";
            if ( (
$result $mysqli->query($query))===false )
{
    
printf("Invalid query: %s\nWhole query: %s\n"$mysqli->error$query);
    exit();
}
            
mysqli_close($mysqli);
            
        }
        catch(
Exception $e){
            echo 
"<div id='error'><b>Fehler: </b><br>".$e->getMessage()."<br><br><b>Datei:</b><br>'".$e->getFile()."'<br><br><b>Zeile:</b><br>".$e->getLine().'</div>';
        }    
    } 
Nun wird mir folgender Fehler ausgegeben:
Code:
Invalid query: Failed to load routine simplegallery.AddOrdnerBild. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6) Whole query: Call AddOrdnerSubBild('Param1','Param1','Param1','Param1','1','1','Param1','Param1',1,1,'Param2')
Eine suche im Google gab bisher auch keine Ergebnisse.
Die DP hat auch den Data Access "MODIFIES SQL DATA".

Hier die SP:
Code:
DELIMITER $$

DROP PROCEDURE IF EXISTS `simplegallery`.`AddOrdnerBild` $$
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `AddOrdnerBild`(name VARCHAR(50), titel VARCHAR(255), dateityp VARCHAR(10), size DECIMAL(10), PicHoehe INT, PicBreite INT, Pfad VARCHAR(255), hash VARCHAR(35), UsrID INT, AlbumID INT, thumb_pfad VARCHAR(255))
    MODIFIES SQL DATA
INSERT INTO bilder (
	Name ,
	Titel ,
	Dateityp ,
	Größe ,
	`Höhe` ,
	Breite ,
	Pfad ,
	Hash ,
	Bewertung ,
	Bewertung_Anz ,
	Bild_Datum ,
	Autor_ID ,
	Ordner_ID,
	Thumbnail_Pfad
)
VALUES (name,titel,dateityp,size, PicHoehe,PicBreite,Pfad,hash,'0','0',NOW(),UsrID,AlbumID,thumb_pfad) $$

DELIMITER ;
Deklariere ich nun das Feld Größe so: `Größe` erhalte ich folgende Fehlermeldung:
Code:
Invalid query: Unknown column 'Gr??Â????¸e' in 'field list' Whole query: Call AddOrdnerBild('Param1','Param1','Param1','Param1','1','1','Param1','Param1',1,1,'Param2')
-- Edit 2 --
Fehler wurde gefunden...
Es lag an dem Ulaten in den Feldnamen der Stored Procedure.
Umlaute wurden entfernt und nun klappt es auch.
Scheint laut Google ein Bug von MySQL zu sein.
reaLInsanity ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » MySQL Stored Procedures
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysql? xeno Cryptography & Encryption 0 23.06.06 17:37
mysql 4 -> mysql 5.0.x bikmaek (Web-) Design und webbasierte Sprachen 11 27.03.06 17:57
mysql und c++ CPU8080 Code Kitchen 9 20.08.05 17:20
C++ und mysql soox Code Kitchen 0 08.02.04 23:30
php und mysql aus mysql db auslesen chrisi01 (Web-) Design und webbasierte Sprachen 1 02.11.03 13:28


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61