bind_param Fehler 500

  • PHP

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von 3daycliff.

    bind_param Fehler 500

    Moin,

    ich habe ein Problem mit meinem PHP-Code.
    Ich möchte über POST Daten an das PHP-Skript senden. (Für API).
    Diese Daten liegen als XML vor und ich möchte diese dann in eine Tabelle einfügen.
    Wenn ich jetzt auf die Funktion zugreife (Mit Chrome Extension Postman), bekomme ich einen Fehler 500. der Fehler verschwindet, sobald ich die Zeile mit $query->bind_param auskommentiere.

    PHP-Quellcode

    1. ​$slimApp->post('/veranstaltung/', function() use ($slimApp) {
    2. $request = $slimApp->request();
    3. $header = $request->headers;
    4. $apikey = $header->get("apikey");
    5. $body = $request->getBody();
    6. $veranstaltung = simplexml_load_string($body);
    7. if (checkApiKey($apikey)) {
    8. $db = @new mysqli(MYSQL_HOST, MYSQL_USERNAMECHANGE, MYSQL_PASSWORDCHANGE, MYSQL_DATABASE);
    9. $db->set_charset("utf8");
    10. if (!$db->connect_errno) {
    11. /*Abfrage erstellen*/
    12. $query = $db->prepare("INSERT INTO veranstaltung (vDatum, vBeginn, vEnde, vTreffen, vName, vLicht, vMusik, vMikro, vMikroAnz, vBeamer, vNotizen, vVerantwortlich) VALUES(?,?,?,?,?,?,?,?,?,?,?,?);");
    13. $query->bind_param("sssssiiiiiss",$veranstaltung->vDatum, $veranstaltung->vBeginn, $veranstaltung->vEnde, $veranstaltung->vTreffen, $veranstaltung->vName, $veranstaltung->vLicht, $veranstaltung->vMusik, $veranstaltung->vMikro, $veranstaltung->vMikroAnz, $veranstaltung->vBeamer, $veranstaltung->vNotizen, $veranstaltung->vVerantwortlich);
    14. if($query->execute()){
    15. header('HTTP/1.0 201 Created');
    16. exit("<h1>201 Created</h1><br>Record successfully created.");
    17. } else{
    18. header('HTTP/1.0 400 Bad Request');
    19. exit("<h1>400 Bad Request</h1><br>Record could not be created.");
    20. }
    21. } else {
    22. header('HTTP/1.0 503 Service Unavailable');
    23. exit("<h1>503 Service Unavailable</h1><br>Database connection failed.");
    24. }
    25. }else{
    26. header('HTTP/1.0 401 Unauthorized');
    27. exit("<h1>401 Unauthorized</h1><br>Invalid API-KEY. Please Contact developer for valid API-KEY!");
    28. }
    29. });


    Ich hoffe ihr könnt mir auf die Sprünge helfen. Ich bin mit meinem Latein am Ende ;)

    Gruß
    HamburgerJungeJr
    Damit ist zumindest der Fehler lokalisiert: $db->prepare.
    Hm... könnte am Semikolon am Ende liegen (das sollte man generell weg lassen, wenn man nur eine "query" absetzt). Wobei die Doku glaube ich nur schreibt, dass man es weglassen sollte.
    Wenn es nichts hilft, den Strichpunkt wegzulassen, lass dir mal mit $db->error nach dem prepare den genauen Fehler ausgeben.

    Achja, ich kenne mich mit Slim so gut wie gar nicht aus, aber du solltest nicht header und exit verwenden. Lieber die eingebauten Funktion, also z.B.:
    Spoiler anzeigen

    PHP-Quellcode

    1. $response = $slimApp->response;
    2. /* ... */
    3. $response->setStatus(201);
    4. $response->setBody('<h1>201 Created</h1><br>Record successfully created.');


    statt:

    PHP-Quellcode

    1. header('HTTP/1.0 201 Created');
    2. exit("<h1>201 Created</h1><br>Record successfully created.");