2016-04-01 6 views
1

Ich versuche, eine Freundschaftsanfrage zu senden, die Benutzer IDs in einer Tabelle kombiniert, aber scheint, habe ich irgendwo einen Fehler gemacht. Hier ist der Code-Fragment:Objekt der Klasse Slim Http Anfrage konnte nicht in Doppel umgewandelt werden

public function sendRequest($user_one_id, $user_two_id, $status, $action_user_id) { 
    $stmt = $this->conn->prepare("INSERT INTO relationship(user_one_id, user_two_id, status, action_user_id) VALUES (?, ?, ?, ?)"); 
    $stmt->bind_param("iiii", $user_one_id, $user_two_id, $status, $action_user_id); 
    $result = $stmt->execute(); // HERE IS AN ERROR 
    $stmt->close(); 

    if (!$result) { 
     return NULL; 
    } else { 
     return TRUE; 
    } 
} 

Der Fehler ich erhalte:

Object of class Slim\Http\Request could not be converted to double 

EDIT:

Dies ist, wie ich bin Methode Aufruf:

$app->post('/send_request', function() use ($app) { 

// check for required params 
verifyRequiredParams(array('user_one_id', 'user_two_id', 'status', 'action_user_id')); 

// reading post params 
$user_one_id = $app->request('user_one_id'); 
$user_two_id = $app->request('user_two_id'); 
$status = $app->request('status'); 
$action_user_id = $app->request('action_user_id'); 
$response = array(); 

$db = new DbHandler(); 

$relationship = $db->sendRequest($user_one_id, $user_two_id, $status, $action_user_id); 

if ($relationship != NULL) { 
    $response["error"] = false; 
    $response["request"]["user_one_id"] = $relationship["user_one_id"]; 
    $response["request"]["user_two_id"] = $relationship["user_two_id"]; 
    $response["request"]["status"] = $relationship["status"]; 
    $response["request"]["action_user_id"] = $relationship["action_user_id"]; 
} else { 
    $response["error"] = true; 
    $response["message"] = "An error occurred. Please try again later."; 
} 
echoRespnse(200, $response); 
}); 
+0

Wie nennt man die Methode? –

+0

Überprüfen Sie meine bearbeitete Antwort. –

+0

Ich habe nie mit Slim gearbeitet, aber da kein erfahrener hilft ... Was ist, wenn Sie Ihre Schließung in: '$ app-> post ('/ send_request', function ($ request) ...') ändern und dann Post-Parameter mit abrufen '$ user_one_id = $ request-> getParam ('user_one_id');', immer noch der selbe Fehler? Das hört sich an, als ob du etwas anderes als post param bekommst. Vielleicht kann var_dump der 4 Variablen einen Hinweis darauf geben, was das Objekt eigentlich ist ... hoffe, es hilft ein wenig – lp1051

Antwort

0

Was passiert in Ihrer verifyRequiredParams Funktion? In dem von Ihnen geposteten Code sehe ich keine Konvertierung eines Slim\Http\Request Objekts.

$user_one_id = $app->request('user_one_id'); 
$user_two_id = $app->request('user_two_id'); 
$status = $app->request('status'); 
$action_user_id = $app->request('action_user_id'); 

Von dem, was ich sagen kann, sind dies die einzigen Codezeilen in dem Sie mit einem Objekt Schlanke Anfrage nichts zu tun. Können Sie überprüfen, ob die Werte in diesen Variablen korrekt sind? Wie var_dump() sie und setzen Sie eine 10 in Ihrem Code und sehen, was es sagt.

+0

Die Funktion 'verifyRequiredParams' funktioniert perfekt, da ich sie bereits in anderen Anfragen verwendet habe. Ich teste das mit Postman und die Parameter, die ich sende, sind:' user_one_id', 'user_two_id',' status', 'action_user_id' Wenn ich versuche, das zu senden, bin ich Ich bekomme keine Werte, die ich gepostet habe. Die Werte, die ich in der Tabelle bekomme, sind alle 1, 1, 1, 1 und gleichzeitig bekomme ich diesen Fehler: 'Das Objekt der Klasse Slim \ Http \ Request konnte nicht in diese Codezeile umgewandelt werden:' $ result = $ stmt-> execute(); ' –

+0

var_dump() alle deine Variablen, um sicher zu sein, dass du die Werte 1, 1, 1 und 1 bekommst. –

+0

kannst du' var_dump' die Parameter innerhalb der 'sendRequest' Funktion? Wenn der Fehler in der '$ result = $ stmt-> execute();' -Zeile steht, dann muss eine der Variablen, die Sie einfügen, ein 'Slim \ Http \ Request'-Objekt sein. – brense

Verwandte Themen