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 ::

Webseiten professionell erstellen

Webseiten professionell erstellen 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)
Hilfe Community Kalender Heutige Beiträge Suchen

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 20.08.2008, 14:44:15
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
Mysqli Probleme

Hallo!
Ich habe mal zwei Fragen an euch MySQLi betreffend.

Wie kann ich mit der Objektorientierten Syntax von MySQLi in einer Methode, die auf ein Klassen internes Verbindungs-Handle ($this->db) zugreifen kann, Daten aus einer Datenbank in ein Array speichern und zurückgeben?

Wie kann ich ebenfalls in einer solchen Methode nur einen einzigen Datensatz aus der Datenbank holen und in eine Variable schreiben?
MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #2  
Alt 20.08.2008, 17:10:27
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Mysqli Probleme

Hast Du schon mal hier nach geschaut?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3  
Alt 20.08.2008, 22:02:50
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: Mysqli Probleme

Natürlich! Immer meine erste Anlaufstelle.Allerdings haben mir die Beispiele nicht wirklich geholfen. Habe auch etwas rumprobiert, allerdings hat es nicht funktioniert. Ein Fehler gab es trotz error_reporting(E_ALL) auch nicht. Das Array blieb leer, obwohl eigentlich eine Rückgabe da war (laut affected_rows). Habe hier mal ein Beispiel.
PHP-Code:
<?php

   
function getName($db$id)
   {
      
// get user name
      
$sql "SELECT `name`
         FROM
            user
         WHERE
            id = '{$id}'
         LIMIT 1"
;

      
// send sql-query
      
$result $db->query($sql);

      
// check result
      
if( !$result )
      {
         echo 
"Cannot get name of {$id}.");
      }
        
      
// get name
      
$id '';
      while( 
$obj $result->fetch_object() ) 
      {
         
$id $obj->id;
      }
   }

   
// create connection to database
   
@$db = new mysqli("localhost""user""pwd""db");

   
// get name of user 2
   
getName($db2);

?>
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #4  
Alt 20.08.2008, 23:38:14
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: Mysqli Probleme

Ich bin mir zwar nicht ganz sicher auf was du hinaus willst, aber dein Code hat ein paar Fehler...

Code:
echo "Cannot get name of {$id}.");
-->Klammer am Schluss weg

Willst du daten aus der Datenbank in einen Array speichern (bei einem select nach id?!?). Dann LIMIT 1 weglassen, aus $id am Ende der Funktion einen array() machen und in der Schleife array_push($id,$obj->id) ausführen.
Willst du einen einzelnen Datensatz zurückgeben, dann passt das soweit. Wobei die while dafür eig. nicht notwendig ist.

Allerdings fehlt für beide das "return" am Schluss der Funktion. Da du nicht mit Zeigern (&Variable) arbeitest, musst du am Ende der Funktion ein "return $id;" ausführen. Beim Aufruf der Funktion musst du ausserdem mit "$ergebnis = getName($db,2);" den Returnwert der Funktion in eine Variable speichern.

Bsp. mit Array:
PHP-Code:
<?php
function getName($db$id)
   {
      
// get user name
      
$sql "SELECT `name`
         FROM
            user
         WHERE
            id = '{$id}'"
;

      
// send sql-query
      
$result $db->query($sql);

      
// check result
      
if( !$result )
      {
         echo 
"Cannot get name of {$id}";
      }
        
      
// get name
      
$res = array();
      while( 
$obj $result->fetch_object() ) 
      {
         
array_push($res,$obj->name);
      }
      return 
$res;
   }

   
// create connection to database
   
@$db = new mysqli("localhost""root""Janisch""test");

   
// get names of user 2
   
$erg getName($db2);
   
   
print_r($erg);
?>
Macht zwar nicht viel Sinn, da hier nach Namen mit gleicher Id gesucht wird, funktioniert aber Reibungslos.

Falls das irgwendwie an deiner Frage vorbeigeschossen war erklärs mir bitte nochmal...

Geändert von Xor (20.08.2008 um 23:40:20 Uhr)
Mit Zitat antworten
  #5  
Alt 21.08.2008, 14:48:58
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: Mysqli Probleme

Entschuldige die Fehler. Habe das gestern nur schnell runtergetippt und das dieses Beispiel nur wenig Sinn macht, ist mir auch klar, obwohl ich ja auch nur den einen passenden namen zu einer bestimmten ID suche und nicht verschiedene Namen zu einer ID. Da eine ID ja nur einmal in einer Datenbank vorkommen sollte kann ich auch LIMIT 1 setzen, damit nach einem Fund nicht weiter gesucht wird. Mich würde es noch interessieren, wie ich das einzelne Ergebnis, wie du es bereits angesprochen hast, ohne eine while()-Schleife in eine Variable speichern und zurückgeben kann.
MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #6  
Alt 21.08.2008, 17:04:58
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: Mysqli Probleme

Wenn man weiß, dass das Ergebnis nur eine Zeile beinhalten kann (und diese auch beinhalten muss) dann sollte man die Funktion mysql_result verwenden... Bzw. es erspart ein paar Zeilen ;)

Hat das alles dir weiterhlfen können?
Mit Zitat antworten
  #7  
Alt 21.08.2008, 22:54:13
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: Mysqli Probleme

Das hilft mir nicht wirklich weiter, denn die Funktion gab es nur für MySQL, aber es gibt sie nicht mehr für MySQLi. An Ihre traten mehrer andere Funktionen. Allerdings könnte man das ganze vielleicht mit mysqli->fetch_row() lösen? Frage ist, ob wirklich die ganze Zeile zurückgegeben wird oder ob nur das angeforderte aus der zeile zurückgegeben wird. Dann hätte die gesuchte Variable ja das Offset 0. Das sähe dann also so aus:
PHP-Code:
<?php

function getName($db$id)

    
$sql "SELECT 
            name
        FROM
            user
        WHERE
            id = '{$id}'
        LIMIT 1"
;

    if ( 
$result $mysqli->query($query) ) 
    {
        
// get row
        
$row $result->fetch_row();
        
$name $row[0];

        return 
$name;
    }

    else
    {
        return 
false;
    }
}

@
$db = new mysqli("localhost""user""password""db");

// check connection
if ( mysqli_connect_errno() ) 
{
    echo 
"Connection failed.";
    exit();
}

// get name  of user with id 3
$name getName($db3); 

// close connection
$mysqli->close();

?>
MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com

Geändert von Socrates (21.08.2008 um 22:54:44 Uhr)
Mit Zitat antworten
  #8  
Alt 22.08.2008, 00:54:49
Xor Xor ist offline
Anfänger
 
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
AW: Mysqli Probleme

Tut mir leid, MySQLi-Erfahrungen konnte ich noch keine sammeln, allerdings bleibt das Prinzip ja ohnehin gleich.
fetch_row() gibt dir bei deinem Select eine Varible pro Reihe zurück. Würde allerdings mysql_fetch_array() verwenden und die Varible über ihren Namen via $fetchedarray[Varname] ansprechen. Schließt eventuelle Fehlerquellen aus.
Mit Zitat antworten
  #9  
Alt 22.08.2008, 01:17:18
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: Mysqli Probleme

Das sähe dann ja wie in dem folgenden Beispiel aus. Allerdings kann ich mir das nicht vorstellen. sollte er das Feld nicht in array[0]['name'] speichern? Oder sehe ich das jetzt falsch. Muss mich unbedingt nochmal stärker in diese Materie einarbeiten. Kam daa leider bisher eher weniger zu.
MfG, Andy

PHP-Code:
<?php

function getName($db$id)

    
$sql "SELECT 
            name
        FROM
            user
        WHERE
            id = '{$id}'
        LIMIT 1"
;

    if ( 
$result $db->query($sql) ) 
    {
        
// get row
        
$array $result->fetch_array();
        
$name $array['name'];

        return 
$name;
    }

    else
    {
        return 
false;
    }
}

@
$db = new mysqli("localhost""web193""andy1729""usr_web193_2");

// check connection
if ( mysqli_connect_errno() ) 
{
    echo 
"Connection failed.";
    exit();
}

// get name  of user with id 1
$name getName($db1); 

// outout
echo "Der user mit der Id 1 heisst {$name}.";

// close connection
$db->close();

?>
//EDIT: Habe mal testhalber eine Tabelle erstellt. Das obige Beispiel funktioniert. Danke!
__________________
BSc. Applied Computer Science
http://www.bornageek.com

Geändert von Socrates (22.08.2008 um 01:34:07 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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
Probleme mit getImageSize() duesentrieb PHP für Fortgeschrittene und Experten 8 01.03.2006 18:55:55
Probleme mit mysql Erweiterung Don Stefano PHP Grundlagen 2 18.07.2005 13:24:44
doch moch mal extend mysqli Small-Talk PHP Grundlagen 1 02.04.2005 02:06:51
mysqli nicht gefunden Don Stefano PHP Grundlagen 1 25.02.2005 15:44:49
PHP mail() funktion und server probleme flobee PHP für Fortgeschrittene und Experten 0 03.07.2002 01:18:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:05:21 Uhr.


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


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