Antworten auf deine Fragen:
Neues Thema erstellen

DB verbindung ueberpruefen

rey

Der Frager ;)

hi,
ich versuche mich an das die OOP zum xten mal ;)
ich wollte mit mysqli beginnen.
das ist mein script.
die function.inc.php
PHP:
function dbverbindung ()
{
  $host = 'localhost';
  $user = 'root';
  $pw = 'gss';
  $database = 'test';
  
  $db = new mysqli($host,$user,$pw,$database);
}
PHP:
require "function.inc.php";
dbverbindung();

if($db->connect_errno)
{
  echo "Fehler ".$db->connect_error;
}
else{
  echo "kein fehler";
}
es müsste eigentlich die Fehler Ausgabe kommen. Da es kein Passwort gibt.
Ich jedoch bekomme die Ausgabe "kein fehler".
 

rey

Der Frager ;)

AW: DB verbindung ueberpruefen

mysqli_connect_errno() ist aber der funktionale Aufruf und nicht der OO.
und $db->connect_errno() macht er nicht.
denn er springt eben leider in den else als ob alles ok ist.
bekomme auch die Meldung.


Warning: main() [function.main]: Couldn't fetch mysqli

Ich weiß nicht woran es lag aber habe nun die xampp Version erneuert nun geht es.
 
Zuletzt bearbeitet:

Chickenshooter

Alter Mann

AW: DB verbindung ueberpruefen

"ich bin mir da auch nich ganz einig"
aber mysqli ist für mysql vers. >= 5 gedacht,
denn nun ist es ja weg das Prob nach Deinem Update.

MfG
 

saila

Moderatorle

AW: DB verbindung ueberpruefen

mysqli_connect_errno() ist aber der funktionale Aufruf und nicht der OO.
und $db->connect_errno() macht er nicht.
denn er springt eben leider in den else als ob alles ok ist.
bekomme auch die Meldung.


Warning: main() [function.main]: Couldn't fetch mysqli

Ich weiß nicht woran es lag aber habe nun die xampp Version erneuert nun geht es.

Vorweg - mysqli ist ab MySQL-Verison 4.1 (auch seit diesem Zeitpunkt) in PHP implementiert.

Was deine Connect-Frage betrifft: PHP: Mysqli - Manual hat da im Grunde den Lösungsansatz und entsprechende Vorgehensweise.

Wenn dein Connect nicht aufgebaut wird und letztlich die Prüfung stimmt (was ich bezweifle), dann sollte auch der Connect erfogreich hergestellt werden.

Die grundlegende Frage bei den Scripten ansich von dir @rey ist, dass diese z.T. logische Denkfehler und auch Flüchtigkeitsfehler beinhalten. Sprich - du solltest dir mehr Zeit geben zur korrekten Erstellung (und auch hier einmal mehr das ganze noch mal durch gehen) und letztlich auch mit dem Thema Exception bzwl Error-Trigger und somit mit try/catch beschäftigen.

Das wäre nun ein vollständiges neues Thema für dich, würde dir allerdings bei den Fehlern die in deinen Scripten sind oder mehrfach auftauchen, deutlich besserere Hilfestellung bieten.
 

rey

Der Frager ;)

AW: DB verbindung ueberpruefen

Ich habe die Überprüfung so geschrieben wie es auch in einen Tutorial von Galileo Computer gemacht wurde geschrieben.
Somit ist es von dem aufbau her korrekt gewesen. Seit dem ich eine andere xampp Version drauf gespielt habe geht es Ohne Probleme.
Ich denke das es irgendwo in den Einstellungen ein Fehler gab.
Ich arbeite das stück für stück ab.
Ich habe vorher immer nur funktional gecodet, bin aber der Meinung das wenn Es OOP ist, das ganze erleichtert.
Es lässt sich vor allem leichter ausbauen.
Hier ein kleines Problem wo ich am tüfteln bin
PHP:
function CheckUser ($Name,$tabelle,$db)
{
  $check_user= $db->query("SELECT * FROM ".$tabelle." WHERE name=".$db->real_escape_string($name)."");
      if($check_user->num_rows)
        {
         while($rowUser=$check_user->fetch_object())
          {
        $Ausgabe[] .= $rowUser->name;
        $Ausgabe[] .= $rowUser->vorname;
          }
          return $Ausgabe;
        }

  else{
    echo "Der Benutzer (".$Name.") wurde nicht in der Tabelle {$tabelle} gefunden.<br/>";
  }
}
Die Meldung aber sagt das es sich mit dem befehl $check_user->num_rows versuche Informationen abzufragen von etwas welches gar kein Objekt ist.
 

saila

Moderatorle

AW: DB verbindung ueberpruefen

Wenn dann:
PHP:
<?php
if($db->num_rows()) {
//blablub
}
?>
Ansonsten zeig die Methode in der Klasse db zu num_rows. Und wenn du schon zu OOP wechselst, dann gewöhne dir direkt an, das Tabellennamen als Kontante gesetzt werden, da diese in überall erreichbar sind und nicht eigens in eine Funktion übergeben werden müssen. Wobei die Funktion selbst schon wieder unnütz ist, weil sie ausserhalb von OOP liegt - oder ist sie in einer Klasse eingebunden?
 

rey

Der Frager ;)

AW: DB verbindung ueberpruefen

Nein die Funktion ist nicht in einer Klasse.
Und wenn ich es so mache
dann bekomme ich folgendes
Call to undefined method mysqli::num_rows()
Danke für den Tipp habe nun den Tabellen Namen als Konstante definiert.
 

saila

Moderatorle

AW: DB verbindung ueberpruefen

Hi rey,

irgendwie ist es immer ein Suchen nach der Nadel im Heuhaufen. Wenn du eine Frage zu einer Funktion oder sonstigem hast, dann teile auch wie in diesem Fall die Klasse mit. Ansonsten hilft das recht wenig.

Wie sieht den die Methode in der Klasse db num_rows aus? Bzw. wird den die Klasse auch irgendwann inizialisiert als $db?!
 

rey

Der Frager ;)

AW: DB verbindung ueberpruefen

So schaut die Instantiierung aus
PHP:
  $db = new mysqli($host,$user,$pw,$database);
Ich habe nun das ganze über bind_param gemacht da es wie ich gehört habe einige Sicherheiten mit sich bringt.
PHP:
function CheckUser ($name,$db)
{
              $check_user = $db->prepare("SELECT name,vorname FROM ".Name." WHERE name=?");
              $check_user->bind_param('s',$name);
              $check_user->bind_result($nachname,$vorname);
              $check_user->execute();             
      if($check_user->num_rows)
        {
         while($check_user->fetch())
          {
        $Ausgabe[] .= $nachname;
        $Ausgabe[] .= $vorname;
          }
          return $Ausgabe;
        }

  else{
    echo "Der Benutzer (".$name.") wurde nicht in der Tabelle ".Name." gefunden.<br/>";
  }
es springt direkt in die Else. Was für mich heißt das der num_rows Aufruf Falsch ist
 

saila

Moderatorle

AW: DB verbindung ueberpruefen

Ich weis nicht ob du auch ein Manual hast, aber hier steht es wie genannt: PHP: mysqli_stmt::num_rows - Manual

Du kannst dir sofern du ein Windows-System hast, das gesamte Manual auf den PC laden unter: PHP: Get Download

Falls ein Linux-System: PHP: Get Download

Dann solltest du dir wirklich Zeit nehmen und erst einmal das Manual lesen!! Insbesondere dann, wenn du mysqli verwendest, was doch sehr unterschiedlich ist zu mysql!

Darüber hinaus ist in der Regel bei mysqli die Platzhalterfunktion in Verwendung ;)
 

rey

Der Frager ;)

AW: DB verbindung ueberpruefen

Vielen dank!
werde ich machen kaum einen blick drauf geworfen und schon gefunden was ich benötige :D
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben