mysql_connect gibt 500 Internal server error

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!“);
[/php]
Wäre cool wenn mir hier jemand helfen kann.
Mfg

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

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();
[/php]

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).

Da fehlt doch was:
[php]$eintrag->bind_param(‚ssii‘, $name, $hashPW, 0, 0);[/php]

Hmm also am Fehler ändert sich nix. Ist auch immernoch bei bind_param

Du zeigst uns immer noch nicht deinen ganzen code. wo wird die verbindung aufgebaut und was passiert alles bevor du diesen query absendest?

[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 ""; exit; } } if ($password!=$password2){ echo ""; exit; } if ($answer!=$captcha){ echo ""; 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ügt.'; }else{ echo 'Der Eintrag konnte nicht hinzugefügt werden.'; } } else { echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: ' .mysqli_connect_errno(). ' : ' .mysqli_connect_error(). ''; } ?>

[/php]

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

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

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

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