2016-09-23 3 views
1

Ich benutze PHP und MySQL. Ich habe den folgenden PHP-Code:MySQL vorbereitete Anweisung generiert internen Server Fehler

$stmt = $this->db_connect()->prepare(
"SELECT P.`pool_id`, P.`pool_name`, PL.`player_id`, PL.`alias`, PP.`paid` " 
."FROM `pool` AS P, `player_pool` AS PP, `players` AS PL " 
."WHERE P.`sponsor` = ? " 
."AND P.`pool_id` = PP.`pool_id` " 
."AND PP.`player_id` = PL.`player_id` " 
."ORDER BY P.`pool_name`, PL.`alias`;"); 

echo "validated_user_id=".$_SESSION['validated_user_id'].PHP_EOL; 
echo "stmt=".($stmt == null); 
$stmt->bind_param("i", $_SESSION['validated_user_id']); 

Es gibt kontinuierlich 500 Internal Server Error zurück. Die Protokolle zeigen [23-Sep-2016 00:05:06] PHP Schwerwiegender Fehler: Aufruf einer Memberfunktion bind_param() auf einem Nicht-Objekt. Die valided_user_id hat einen gültigen Wert, aber die Variable $ stmt ist null.

Zuerst dachte ich, ich benutze ein reserviertes Wort, also entkam ich allem - kein Erfolg. Ich habe viele andere DB-Abfragen, die sehr ähnlich aussehen, die gerade gut funktionieren ...

Was mich wirklich verbrennt ist, dass der exakt gleiche Code funktioniert gut auf meinem lokalen Arbeitsbereich - dieser Fehler erscheint nur auf dem Host. Tatsache ist, ich habe keine Ahnung, wonach ich suchen muss, um herauszufinden, warum - bitte helfen Sie mir.

Das Problem gefunden - es gab einen sehr kleinen Unterschied im Namen einer der Spalten, die nicht auf dem Host war.

+0

Das erste, was zu tun ist, aus dieser Aussage zu drucken, um zu sehen, ob es in Ordnung ist. – e4c5

+0

Bitte beachten Sie diesen Link http://www.w3schools.com/php/php_mysql_prepared_statements.asp –

+0

Werfen Sie einen Blick auf die Version des MySQL-Servers sowohl lokal als auch auf dem Remote-Host. – Havelock

Antwort

2

Ihre prepare()-Funktion scheint Null zurückzugeben. Dies kann aufgrund eines Fehlers in SQL passieren, aber höchstwahrscheinlich, wenn es auf Ihrem lokalen Computer funktioniert, gibt es ein Problem mit der Datenbankverbindung.

Überprüfen Sie Ihre $this->db_connect() Funktion, wenn es Verbindungsfehler meldet. Die Trennung der db_connect() Anruf aus dem prepare() Aufruf könnte helfen, die Ursache zu isolieren:

$connection = $this->db_connect(); 
var_dump($connection); 
$stmt = $connection->prepare(...); 
+0

Versuchte dies habe ich eine Verbindung - immer noch fehl, wenn ich versuche, die Aussage zu erstellen. – BigMac66

+0

Sie haben erwähnt, dass SQL möglicherweise fehlerhaft ist, was tatsächlich der Fall war - danke. – BigMac66

Verwandte Themen