• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mysql_connect gibt 500 Internal server error

Nakroma

Mitglied
Hallo,
Zu allererst, ja ich weiß man sollte mysqli benutzen.

Ich habe letztens meinen eigenen Rootserver aufgesetzt und da IIS mit PHP und MySql draufgemacht.
MySql funktioniert (ich hab Zugang über phpmyadmin, commando zeile funktioniert), PHP funktioniert und MySql ist dort aktiviert.
http://puu.sh/8uise.png (phpinfo)
http://puu.sh/8uiv1.png (php.ini)

Nutzername und Passwort ist 100% richtig.
http://puu.sh/8uixm.png Das hier wäre die Fehlermeldung
Und das hier mein Code:
PHP:
mysql_connect($db_host, $db_username, $db_password) or die ("No connection possible!");
mysql_select_db($db_name) or die ("No database found!");
Wäre cool wenn mir hier jemand helfen kann.
Mfg
 
Werbung:
Internal server error hat nichts mit mysql zu tun. Irgendetwas an deinem Script ist kaputt und deshalb wird der 500er geworfen.
Ohne mehr code können wir dir nicht helfen.

Ps: Benutze lieber mysqli anstadt mysql. :)
 
So habe jetzt auf MySqli umgestellt und jetzt klappt immerhin das connecten.
Auch das auslesen funktioniert.
PHP:
  $hashPW = mySHA($password);

   $sql = 'INSERT INTO `members` (`Username`, `Password`, `Group`, `Rank`) VALUES (?, ?, ?, ?)';
   $eintrag = $db->prepare($sql);
   $eintrag->bind_param('ss', $name, $hashPW, 0, 0);
  $eintrag->execute();
  $eintrag->store_result();

Es crasht bei bind_param.
Wenn ich ein exit; nach prepare mache, kommt nichts, aber wenn ich es nach bind_param mache kommt der 500 Internal Server Error.
(ergo es ist offenbar iwas an bind_param falsch).
 
Werbung:
Da fehlt doch was:
PHP:
$eintrag->bind_param('ssii', $name, $hashPW, 0, 0);
 
Du zeigst uns immer noch nicht deinen ganzen code. wo wird die verbindung aufgebaut und was passiert alles bevor du diesen query absendest?
 
Werbung:
PHP:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$answer = $_POST['answer'];
$captcha = $_POST['captcha'];

include '../mysql.php';
include '../functions.php';
$db = new mysqli($db_host, $db_username, $db_password, $db_name);
if (mysqli_connect_errno() == 0){
$query = mysqli_query($db, "SELECT * FROM members");

   while ($row = mysqli_fetch_array($query)) {
      if ($row['Username'] == $name) {
      echo "<meta http-equiv=\"refresh\" content='0;URL=./?p=register.php&&e=name'>";
      exit;
     }
   }

   if ($password!=$password2){
     echo "<meta http-equiv=\"refresh\" content='0;URL=../?p=register.php&&e=pw'>";
     exit;
   }

   if ($answer!=$captcha){
     echo "<meta http-equiv=\"refresh\" content='0;URL=../?p=register.php&&e=captcha'>";
     exit;
   }


   // Registration successful

   $hashPW = mySHA($password);

   $sql = 'INSERT INTO `members` (`Username`, `Password`, `Group`, `Rank`) VALUES (?, ?, ?, ?)';
   $eintrag = $db->prepare($sql);
   $eintrag->bind_param('ssii', $name, $hashPW, 0, 0);
   exit;
  $eintrag->execute();
   
  if ($eintrag->affected_rows == 1)
  {
  echo 'Der neue Eintrage wurde hinzugef&uuml;gt.';
  }else{
  echo 'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
  }

} else {
    echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <span class="hinweis">' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). '</span>';
}
?>

Wie gesagt, das selecting funktioniert, da die Abfragen etc. alle funktionieren
 
Ich werde deinen code einfach mal von anfang bis ende durchgehen und dir sagen was ich daran ändern würde. mal gucken ob ich den fehler finde oder dir nur nützliche tipps geben kann ^^

Erstmal liest du ALLE mitglieder aus und dann prüfst du in einer schleife ob der angegebene benutzername in einem der einträge steht.
Bevor mir die schleife aufgefallen ist wollte ich dich darauf hinweisen das du doch lieber soetwas schreibst

Code:
SELECT `Username` FROM members

Damit du nur die Daten besorgsts die du auch wirklich brauchst.
Nun verstehe ich aber wirklich nicht warum du eine schleife verwendest anstadt einfach zu gucken ob GENAU der benutzer den du auch suchst in deiner Datenbank ist und zwar ungefähr so

Code:
SELECT COUNT(*) FROM members WHERE `Username` = ?

Als ergebniss würdest du nun eine zahl bekommen die der anzahl an treffern entspricht was schätzungsweise 0 oder 1 sein sollte.
So sopaarst du dir diesen ganzen schleifen müll und viel rechenzeit :)

Nun würde ich dir vorschlagen, dass du mal deine log dateien anguckst. wenn ein 500er error geworfen wird muss irgendwo in einer logdatei deines servers stehen was genau passiert ist. aus deinem code kann ich leider nicht genau erkennen, wo er fehlerhaft ist. Also wenn niemand anderes hier heute nen guten tag hat und den fehler auf anhieb sieht kommen wir ohne die log datei nicht weiter.

lg
 
Zurück
Oben