Verbindung zu MySQL mit PHP funktioniert nicht

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Verbindung zu MySQL mit PHP funktioniert nicht

Postby Truncatus » 22. November 2014 14:50

Guten Tag, kleine Anmerkung.
Ich war mir nicht sicher, ob das hier in diesen Thread passt. Ich schildere mal mein Problem.

Mein Ziel ist es, über ein PHP-Script eine Verbindung mit einer von mir eingerichtete MySQL-Datenbank herzustellen.

Was habe ich gemacht?
Ich habe mir Xampp angeschafft, über das Control Panel Xampp und eben MySQL angeschmissen und als "admin" eine Datenbank in mysql erstellt. Nun versuche ich, auf diese Datenbank mit einem PHP-Dokument(welches ich mit dem Abtana Studio 3 erzeugte) zuzugreifen.

Aber natürlich funktioniert das nicht. Ich hab festgestellt, dass man nen lokalen Server dafür braucht(oder zumindest brauche ich das alles lokal). Für einen Bekannten muss es lokal sein. Wann immer er möchte, soll er seine Datenbank mit PHP-Dokumenten bearbeiten können. Da er selbst nicht gewandt mit SQL ist, möchte ich für ihn ein Dokument erstellen, wo er alles ausfüllen und dann bearbeiten kann, sprich: Eine einfache Bedienoberfläche.

Ich habe nun auf MySQL einen lokalen Server eingerichtet. Habe auch einen Datenbanknamen, Hostnamen, ect. angegeben. Nun versuchte ich eine Verbindung mittels dieses scriptes aufzubauen:

Aus Datenschutzgründen für dieses Beispiel einen Namen geändert.
<?php
require 'pwd_inc.php';

$c = mysqli_connect($db_user, $db_server, $db_pwd, $db_name );

if ( false == $c ){
die('<p>Keine Verbindung zum MySQL-Server</p>');} //Skript abbrechen

mysql_select_db('DATENBANKNAME') or
die('<p>Keine Verbindung zur DB</p>');

?>


In einem anderen Dokument führe ich dieses Script aus, um auf der Seite die Einträge dieser Datenbank anzusehen. Allerdings kommt eben diese Fehlermeldung, welche ich im "die" angewiesen habe. Sogesehen kann er keine Verbindung zur Datenbank aufbauen.


Die Frage ist also:
Wie kann ich auf diese Datenbank zugreifen?
Was muss der Server für Daten haben und wo kann ich sie festlegen?
Gibt es eine optimiertere Möglichkeit?

Wichtig ist:
Das ganze muss offline(Also ohne Internetverbindung) funktionieren können.

Ich hoffe, ihr könnt mir helfen.
Truncatus
 
Posts: 5
Joined: 20. November 2014 14:23
Operating System: Windows Vista

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Altrea » 22. November 2014 15:03

Hallo Truncatus,

deine Beschreibung ist leider so wirr, das man das reale Szenario nicht schlüssig herauslesen kann. Weiterhin ist es schwer bis unmöglich die Ursache für Verbindungsprobleme zu erkennen, wenn man die Verbindungsparameter nicht kennt.
Daher ein paar Allgemeine Tipps:

- Mixe nicht mysqli mit mysql. Der Aufrug mysql_select_db ist obsolet, da du mit mysqli direkt mit einer spezifischen Datenbank verbindest.
- mysqli bietet Funktionen, eine spezifische Fehlermeldung auszugeben: http://php.net/manual/de/mysqli.error.php

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby WilliL » 22. November 2014 18:15

das habe ich am Anfang eines jeden PHP-Scripts stehe..

/* ******* wichtig zum debuggen >> echo "<br> erg - ".mysqli_errno($conid). ": " . mysqli_error($conid)."<br>"; ******* */
/* ******* wichtig zum debuggen >> foreach($_SESSION as $k => $v) { echo 'Var ('.$k.') --> '.$v.'<br>'; } (array ausgeben ******* */

Wenn die 1. mal vor dem "die" eingefügt wird, sollten dir die Hinweise sagen warum es nicht klappt..
Willi
WilliL
 
Posts: 660
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Truncatus » 22. November 2014 18:39

Leider komme ich gar nicht erst dazu, einen Datenbank-Fehler angezeigt zu bekommen.
Vielleicht liegt es am Server, ich weiß es nicht. In meiner Ausbildung war alles da und es lief. Hier hingegen...
Das einzige Tutorial, was ich zu meinem Problem fand, arbeitet mit diesem 2placed, was ich eigentlich nicht tun möchte, weil es eben dann nicht lokal ist.


Ich habe aber auch andere Fehler, die ich mir nicht erklären kann.

Dies ist das Script, was ich dafür benutze, um mich mit der Datenbank in Verbindung zu setzen. Die Logindaten hab ich umgeschrieben.
<?php
$c = mysql_connect('USERNAME', 'DATENBANKNAME', 'PASSWORD');

if ( false == $c ){
die('Keine Verbindung zum MySQL-Server' . mysql_error);}else{
die('Es klappt');} //Skript abbrechen
?>


Natürlich kommt hier erstmal nur ein "die", damit ich zumindest weiß, welchen Pfad es einschlägt. wenn ich es aber teste, kommt gar nichts. Die Seite ist vollkommen leer.


Die nächste Seite ist noch verrückter.
Dies ist mein Script, was ich für eine Auflistung aller Kunden verwende:
<!DOCTYPE>
<html>
<head>
<title>Kunden anzeigen</title>
<style>
.grau{
background-color: #c0c0c0;
color: #000;
}
.weiß{
background-color: #fff;
color: #000;
}
</style>
</head>
<body>

<?php
require 'connect.php';
mysqli_select_db("t_kunden") or
die('<p>Keine Verbindung zur Datenbank</p>');

if(isset($_GET['id'])){
$sql = "DELETE FROM t_kunden WHERE id = " . $_GET['id'] . "";
$r = mysql_query($sql);
if (false == $r)
die("<p>Fehler beim DELETE!: " . mysql_error() . "</p>");
}

$sql = "SELECT * FROM t_kunden";
if(isset($_GET['orderby'])){$sql.= " ORDER BY " . $_GET['orderby'];}
$r = mysql_query($sql);

if (false == $r){
die("<p>Fehler beim SELECT!: " . mysql_error() . "</p>");}

echo '<table border="1" cellpadding="10" cellspacing="0">';

echo '
<th><a href="kunden.php?orderby=id">ID</th>
<th><a href="kunden.php?orderby=nachname">NACHNAME</th>
<th><a href="kunden.php?orderby=vorname">VORNAME</th>
<th><a href="kunden.php?orderby=email">EMAIL</th>
<th><a href="kunden.php?orderby=anrede">ANREDE</th>
<th><a href="kunden.php?orderby=telefon">TEL</th>
<th>L&ouml;schen?</th>
<th>Bearbeiten</th>
</tr>';

$x = 1;

while( $t = mysql_fetch_array($r) ) {

if ( $x%2 )
$bg = 'weiß';
else
$bg = 'grau';

$x++;

if($t['anrede'] == "m"){
$t['anrede'] = "Herr";
}else
$t['anrede'] = "Frau";
//Optional funktioniert auch: $anrede = $t['Anrede'] == 'm'?'Herr':'Frau';

echo '<tr class="' . $bg . '">
<td>' . $t['id'] . '</td>
<td>' . $t['nachname'] . '</td>
<td>' . $t['vorname'] . '</td>
<td>' . $t['email'] . '</td>
<td>' . $t['anrede'] . '</td>
<td>' . $t['telefon'] . '</td>
<td><a href="kunden_anzeigen.php?id=' . $t['id'] . '">L&ouml;schen</td>
<td><a href="edit.php?id=' . $t['id'] . '">bearbeiten</td>
</tr>';
}
echo '</table>';

?>
</body>
</html>




Aber, wenn ich es starte, kommt das dabei raus:
Image


Kann mir jemand helfen? Ich hab nämlich keinen Plan, warum es so herumspackt. :/
Truncatus
 
Posts: 5
Joined: 20. November 2014 14:23
Operating System: Windows Vista

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Truncatus » 22. November 2014 19:18

WilliL wrote:das habe ich am Anfang eines jeden PHP-Scripts stehe..

/* ******* wichtig zum debuggen >> echo "<br> erg - ".mysqli_errno($conid). ": " . mysqli_error($conid)."<br>"; ******* */
/* ******* wichtig zum debuggen >> foreach($_SESSION as $k => $v) { echo 'Var ('.$k.') --> '.$v.'<br>'; } (array ausgeben ******* */

Wenn die 1. mal vor dem "die" eingefügt wird, sollten dir die Hinweise sagen warum es nicht klappt..


Leider nicht. :/
Wenn ich das Script teste, spuckt er eins zu eins diesen Text aus:
> echo "
erg - ".mysqli_errno($conid). ": " . mysqli_error($conid)."
"; ******* */ /* ******* wichtig zum debuggen >> foreach($_SESSION as $k => $v) { echo 'Var ('.$k.') --> '.$v.'
'; } (array ausgeben ******* */ require 'connect.php'; mysqli_select_db("t_kunden") or die('

und dann folgt das selbe Kauderwelsch, welches du im vorherigen Post findest.
Truncatus
 
Posts: 5
Joined: 20. November 2014 14:23
Operating System: Windows Vista

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Altrea » 22. November 2014 19:33

Truncatus wrote:mysqli_select_db("t_kunden") or
die('<p>Keine Verbindung zur Datenbank</p>');

Das kann nie positiv zutreffen. Benutz mysql oder mysqli, nicht beides. Daher kommt die "falsche" Fehlermeldung

Truncatus wrote: echo '<tr class="' . $bg . '">
<td>' . $t['id'] . '</td>
<td>' . $t['nachname'] . '</td>
<td>' . $t['vorname'] . '</td>
<td>' . $t['email'] . '</td>
<td>' . $t['anrede'] . '</td>
<td>' . $t['telefon'] . '</td>
<td><a href="kunden_anzeigen.php?id=' . $t['id'] . '">L&ouml;schen</td>
<td><a href="edit.php?id=' . $t['id'] . '">bearbeiten</td>
</tr>';

Variablen werden bei einfachen Anführungszeichen nicht aufgelöst
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Truncatus » 22. November 2014 19:44

Altrea wrote:
Truncatus wrote:mysqli_select_db("t_kunden") or
die('<p>Keine Verbindung zur Datenbank</p>');

Das kann nie positiv zutreffen. Benutz mysql oder mysqli, nicht beides. Daher kommt die "falsche" Fehlermeldung

Da war ich ohnehin sehr verwirrt. Ich dachte, man benötigt "mysql", um die Verbindung erstmal aufzubauen und dann einmalig "mysqli" um die Datenbank auszuwählen. :/

Altrea wrote:
Truncatus wrote: echo '<tr class="' . $bg . '">
<td>' . $t['id'] . '</td>
<td>' . $t['nachname'] . '</td>
<td>' . $t['vorname'] . '</td>
<td>' . $t['email'] . '</td>
<td>' . $t['anrede'] . '</td>
<td>' . $t['telefon'] . '</td>
<td><a href="kunden_anzeigen.php?id=' . $t['id'] . '">L&ouml;schen</td>
<td><a href="edit.php?id=' . $t['id'] . '">bearbeiten</td>
</tr>';

Variablen werden bei einfachen Anführungszeichen nicht aufgelöst


Aber müssen Einträge nicht in Anführungsstrichen stehen? :oops:
Kannst du mir den Fehler etwas genauer erläutern?
Truncatus
 
Posts: 5
Joined: 20. November 2014 14:23
Operating System: Windows Vista

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Altrea » 22. November 2014 21:02

Truncatus wrote:Aber müssen Einträge nicht in Anführungsstrichen stehen? :oops:
Kannst du mir den Fehler etwas genauer erläutern?

Es gibt nichtnur einfache Anführungsstriche sondern auch doppelte. Strings müssen aber auch nicht zwingend in Anführungsstriche stehen, es gibt auch andere Delimiter wie bei Heredoc und Nowdoc.

Alles weitere, vorallem zu den Unterschieden, schreibt die php Dokumentation zu strings: http://php.net/manual/de/language.types.string.php
Solltest du unbedingt lesen
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby WilliL » 24. November 2014 22:52

Code: Select all
<?php
$c = mysql_connect('USERNAME', 'DATENBANKNAME', 'PASSWORD');

if ( false == $c ){
   die('Keine Verbindung zum MySQL-Server' . mysql_error);}else{
   die('Es klappt');} //Skript abbrechen
?>

Erfolgt der Aufruf wirklich so?
Ich kenn eigentlich
Code: Select all
$link = mysql_connect('HOST', 'USER', 'PASSWORD'); // Verbindung zu MySQL erstellen
$result = mysql_select_db('DATENBANK', $link);           //Datenbank auswaehlen
nach PHP Manual und in einem folgenden Aufruf wird die die Datenbank eingebunden. (Diese Befehle wird es wohl nicht mehr lange geben - E_DEPRECATED)

Bzw
Code: Select all
$link = mysqli_connect("HOST","USER","PASSWORD","DATENBANK");
if (!$link)
      echo "<br> erg - ".mysqli_errno($link). ": " . mysqli_error($link)."<br>";
nach PHP Manual
Willi
WilliL
 
Posts: 660
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Truncatus » 03. December 2014 20:43

Guten Abend,

sorry für die lange Abwesenheit. War verreist.^^

Ich habe nun einige Probleme gelöst, doch neue kamen wieder auf.

Bez Code:
Code: Select all
<!DOCTYPE>
<html>
    <head>
     <title>Kunden anzeigen</title>
        <style>
              .grau{
                 background-color: #c0c0c0;
                 color: #000;
            }
              .weiß{
                 background-color: #fff;
                 color: #000;
            }
        </style>
    </head>
<body>
   
   <?php
      require 'connect.php';
      mysqli_select_db('t_kunden') or
         die ('Bla');
      
      if(isset($_GET['id'])){
         $sql = 'DELETE FROM t_kunden WHERE id =' . $_GET['id'];
         $con = mysql_query($sql);
          if (false == $con)
             die('Fehler beim DELETE!: ' . mysql_error());
      }
      
      if(isset($_GET['orderby'])){$sql.= ' ORDER BY ' . $_GET['orderby'];}
      $con = mysql_query($sql);
      
      //$sql = 'SELECT * FROM t_kunden';
      $sql = 'INSERT INTO t_kunden ("Anrede_ID", "Nachname", "Vorname", "Telefon", "Handy", "Email", "Notiz") VALUES ("0", "Mustermann", "Max", "0220220220", "1234567890", "max_mustermann@test.de", "Dies dient zu Testzwecken.")';
         $con = mysql_query($sql);
         if (false == $con){
          die('Fehler beim SELECT!: ' . mysql_error());}
      
         echo "<table border='1' cellpadding='10' cellspacing='0'>
            <tr>
               <th><a href='kunden.php?orderby=id'>ID</a></th>
               <th><a href='kunden.php?orderby=nachname'>NACHNAME</a></th>
               <th><a href='kunden.php?orderby=vorname'>VORNAME</a></th>
               <th><a href='kunden.php?orderby=email'>EMAIL</a></th>
               <th><a href='kunden.php?orderby=anrede'>ANREDE</a></th>
               <th><a href='kunden.php?orderby=telefon'>TEL</a></th>
               <th>L&ouml;schen?</th>
               <th>Bearbeiten</th>
            </tr>
            </table>";
            
      $x = 1;
   
      while($t = mysql_fetch_array($con)) {
         
      if ($x%2)
         $bg = 'weiß';
      else
         $bg = 'grau';
         
      $x++;
   ?>
   </body>
</html>


Ich habe mich mal bei 3wschool schlaugemacht und dementsprechend mal alles Stück für Stück weitergebaut. Sofern kamen keine Satzfetzen mehr vor. Eine Sache, die mir komisch ist, ist, dass keine wirkliche Tabelle angezeigt(Es entstehen keine Rahmen um die) wird.

Image



Würde mich über Hilfe tierisch freuen.^^
Truncatus
 
Posts: 5
Joined: 20. November 2014 14:23
Operating System: Windows Vista

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Nobbie » 03. December 2014 23:09

Truncatus wrote:Würde mich über Hilfe tierisch freuen.^^


Da können wir uns zusammen tun - ich bin finanziell gerade echt total klamm und würde mich über Hilfe tierisch freuen.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: Verbindung zu MySQL mit PHP funktioniert nicht

Postby Altrea » 04. December 2014 13:46

Entweder hat die Datei keine .php Dateiendung, oder du "öffnest" sie falsch im Browser oder beides.
Das sind die häufigsten Ursachen dieser Probleme.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 42 guests