Im setting a small webservice that should return true if it finds the user, on the DB, and false if it doesn't. But its allways returning false.
In fact if I echo something on the foreach it doesn't return anything, and if I echo $data I get Undefined variable: data
I've tried to search with the id, and it seems fine
If I test with, for example, a route of /api/users/login/{id}, and alter the foreach to foreach($db->user()->select('username', 'pass')->where('id', $id) as $row) it will execute correctly.
$app->get('/api/users/login/{username}/{password}', function($request){
$username = $request -> getAttribute('username');
$password = $request -> getAttribute('pass');
$id = $request->getAttribute('id');
require_once('db/dbconnect.php');
foreach($db->user()->select('username', 'pass')->where('username', 'pass', $username, $password) as $row){
$data[] = $row;
}
if(isset($data)){
echo json_encode(true, JSON_UNESCAPED_UNICODE);
}else{
echo json_encode(false, JSON_UNESCAPED_UNICODE);
}
});
Will the problem be that I'm going to fetch strings from the route? If so, how can I correct it?
Your usage of where() is not right, you should use it with an array of conditions.
From the api:
$table->where(array("field" => "x", "field2" => "y"))Translated to
field = 'x' AND field2 = 'y'(with automatic escaping)
$db->user()->select('username', 'pass')->where([
'username' => $username,
'pass' => $password
])