SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 29.01.2007, 11:29:58
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
Feldlängen bei Textfeldern werden in Klasse falsch ermittelt

In folgender Klasse bei Methode(listField) werden die Feldlängen von Textfeldern falsch ausgegeben, wenn ich zuvor schon eine Anfrage über irgendeine andere Methode gestartet habe. Die Feldlängen werden anscheinend mit 3 multipliziert. Die Felder mit Integer-Werte bleiben unberührt und werden richtig ausgegeben.
An was könnte das liegen?
Wenn ich allerdings in der Methode listField() die Verbindung beende und neu starte werden die Feldlängen richtig ermittelt.

Tabelle:
id => tinyint(2)
txt => varchar(20)
datei => varchar(50)
platz => tinyint(2)
fsp => varchar(4)
templ => varchar(30)
aktiv => enum('Y','N')

MySql-Klasse
PHP-Code:
class DB_MySQL {
    
/**
     * @var resource $connection Datenbank-Verbindung
     */
    
private $connection NULL;
    
/**
     * @var resource $result Ergebniskennung
     */
    
private $result NULL;
    
/**
     * @var string $fseite Fehlerseite
     */
    
protected $fseite 'fehler.php';
    
/**
     * @var string $sseite CMS-Startseite
     */
    
protected $sseite 'start.php';

    private 
$host 'localhost';
    private 
$db 'xxxx';
    private 
$user 'xxxx';
    private 
$pass 'xxxx';

    
/**
     * startet automatische DB-Verbindung
     *
     */
    
public function __construct() {
        
$this->connect();
        
    }

    
/**
     * Weiterleitung auf eine andere Seite
     *
     * @param string $seite Seite auf die weitergeleitet werden soll
     * @param integer $param Fehler-Id bei Fehlermeldung oder NULL
     */
    
public function SendError($seite$param) {
        if(!empty(
$param)) $_SESSION['fid'] = $param;
        
header('location:'.$seite);
        exit;
    }
    
    
/**
     * verschlüßelt Passwort in Verbindung mit Benutzer-Namen und doppeltem md5
     *
     *@param string $user Benutzer-Name
     *@param string $pas Passwort wie es eingegeben wurde
     *@return string verschlüßeltes Passwort
     */
    
public function UserPass($user$pas) {
        
$new_pas md5(base64_encode(substr($user03)).md5($pas));
        
$new_pw substr($new_pas010).substr($user03).substr($new_pas10);
        
        return 
$new_pw;
    }

    
/**
     * Funktion zur Prüfung von übergebenen $_GET, $_POST, $_SESSION und $_SERVER - Variablen
     * Sonderzeichen werden maskiert um SQL-Injektion zu verhindern
     *
     * @param mixed $data
     * @return mixed modifizierte Werte
     */
    
public function PruefVar($data)
    {
        
// stripslashes, falls ntig
        
if(get_magic_quotes_gpc()) $data stripslashes($data);

        
// quotieren, falls kein integer
        
if (!is_numeric($data)) {
            
$data strip_tags($data);
            
$data mysql_real_escape_string($data);
        }
        
        return 
$data;
    }
    
    
/**
     * übergibt Elemente eines Array an eine Funktion
     *
     * @param array $data
     * @return array modifizierte Werte des Arrays
     */
    
public function PruefArray($data) {
        if(
is_array($data)) {
            foreach(
$data as $key => $val)
            {
                if(
is_array($val)) {
                    foreach(
$val as $kkey => $kval)
                    {
                        
$data[$key][$kkey] = $this->PruefVar($kval);
                    }
                }
                else 
$data[$key] = $this->PruefVar($val);
            }
        }
        return 
$data;
    }
    
    
/**
     * stellt Verbindung zur Datenbank her,
     * bei Fehlschlag wird auf eine Infoseite weitergeleitet
     *
     */
    
public function connect() {
        
$this->connection = @mysql_connect($this->host$this->user$this->passTRUE);
        if(
is_resource($this->connection)) {
            
mysql_select_db($this->db$this->connection);
        }
        else {
            
$this->SendError('wartung.html'6);
        }
    }

    
/**
     * beendet Datenbank-Verbindung
     *
     */
    
private function disconnect() {
        if (
is_resource($this->connection)) {
            
mysql_close($this->connection);
        }
    }

    
/**
     * führt eine Anfrage an Datenbank aus
     *
     * @param string $query Query-String / Abfrage
     * @return integer Anzahl betroffener Datensätze oder Insert-Id
     */
    
public function query($query) {
        if (
is_resource($this->connection)) {
            if (
is_resource($this->result)) {
                
mysql_free_result($this->result);
            }
            
mysql_query("SET names 'UTF8'");
            
$this->result mysql_query($query$this->connection) or die(mysql_error()."<br>$query");
            if(
mysql_insert_id()) return mysql_insert_id();
            else return 
mysql_affected_rows();
        }
    }

    
/**
     * liefert gefundene Daten als Objekt zurück
     *
     * @return object gefundene Datenstze
     */
    
public function fetchObject() {
        if (
is_resource($this->result)) {
            
$row mysql_fetch_object($this->result);
            if (
is_object($row)) {
                return 
$row;
            }
            else {
                return 
FALSE;
            }
        }
    }
    
    
/**
     * liefert gefundene Daten als Array zurück
     *
     * @return array gefundene Daten
     */
    
public function fetchAssoc() {
        if (
is_resource($this->result)) {
            
$row mysql_fetch_assoc($this->result);
            if (
is_array($row)) {
                return 
$row;
            }
            else {
                return 
FALSE;
            }
        }
    }
    
    
/**
     * liefert gefundene Daten als indiziertes Array zurück
     *
     * @return array gefundene Daten
     */
    
public function fetchRow() {
        if (
is_resource($this->result)) {
            
$row mysql_fetch_row($this->result);
            if (
is_array($row)) {
                return 
$row;
            }
            else {
                return 
FALSE;
            }
        }
    }

    
/**
     * liefert Ergebnismenge bei Verwendung von COUNT()
     *
     * @return integer Treffer-Zahl
     */
    
public function sqlCount() {
        if(
is_resource($this->result)) {
            
$count mysql_result($this->result0);
            if(
$count 0) return $count;
            else return 
FALSE;
        }
    }

    
/**
     * liefert Ergebnismenge bei Verwendung von SQL_CALC_FOUND_ROWS
     */
    
public function foundRows() {
        if(
is_resource($this->result)) {
            
$count mysql_result(mysql_query("SELECT FOUND_ROWS()"$this->connection), 0);
            if(
$count 0) return $count;
            else return 
0;
        }
    }
    
    
/**
     * Liefert Informationen über Tabellen-Feldlänge
     *
     * @param string $tab DB-Tabelle
     * @return array Tabellenfeld-Informationen Index = Feldname, Wert = Feldlänge
     */
    
public function listField($tab) {
        
$array = array();
        
/*$this->disconnect();
        $this->connect();*/
        
if (is_resource($this->connection)) {
            if (
is_resource($this->result)) {
                
mysql_free_result($this->result);
            }
            
$this->result mysql_list_fields($this->db$tab) or die(mysql_error());

            for(
$f 0$f mysql_num_fields($this->result); $f++)
            {
                
$array[mysql_field_name($this->result$f)] = mysql_field_len($this->result$f);
            }
        }
        
        return 
$array;
    }
    
    
/**
     * automatische Trennung der Datenbank-Verbindung
     *
     */
    
public function __destruct() {
        
$this->disconnect();
    }

Rufe ich die Methode listField() als erstes auf. Werden alle Feldlängen richtig ausgegeben.
Wird sie aber nach einer anderen Methode z.Bsp. query() werden sie falsch ausgegeben.

richtig
PHP-Code:
require_once('../cms/php/mysql_db.php');

$db = new DB_MySQL;

$felder $db->listField('de_nav');

foreach(
$felder as $key => $val)
{
    print 
$key.' => '.$val."<br>\n";

Ausgabe:
id => 2
txt => 20
datei => 50
platz => 2
fsp => 4
templ => 30
aktiv => 1

falsch
PHP-Code:
require_once('../cms/php/mysql_db.php');

$db = new DB_MySQL;
$db->query("select count(*) from de_unav");
$db->sqlCount();

$felder $db->listField('de_nav');

foreach(
$felder as $key => $val)
{
    print 
$key.' => '.$val."<br>\n";

Ausgabe:
id => 2
txt => 60
datei => 150
platz => 2
fsp => 12
templ => 90
aktiv => 3
__________________
Grüße Andes

Geändert von Andes (29.01.2007 um 11:30:52 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann eine Klasse in einer Eigenschaft ein Objekt, einer anderen Klasse instanzieren? Balthazzar PHP für Fortgeschrittene und Experten 6 06.07.2006 17:06:36
Klasse in Klasse aufrufen wollenschlaeger PHP für Fortgeschrittene und Experten 4 14.07.2005 14:05:32
Andere Klasse aus Klasse aufrufen NanoCyte PHP für Fortgeschrittene und Experten 22 28.06.2004 22:24:53
Blätterfunktion als Klasse! Funjoy PHP Entwicklung und Softwaredesign 0 25.06.2004 00:45:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:33:35 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt