0

trueDBでユーザーが見つかった場合、および見つからなかった場合に返される小さなWebサービスを設定falseしています。しかし、常に戻ってきfalseます。実際、echo何かをforeach返しても何も返されず、エコーする$dataと取得されますUndefined variable: data

IDで検索してみましたが大丈夫そうです

たとえば、 のルートでテストし、 を に/api/users/login/{id}変更するforeachforeach($db->user()->select('username', 'pass')->where('id', $id) as $row) 、正しく実行されます。

$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);
    }


});

問題は、ルートから文字列をフェッチすることですか? もしそうなら、どうすれば修正できますか?

4

1 に答える 1

1

の使用法がwhere()正しくありません。一連の条件で使用する必要があります。

APIから:

$table->where(array("field" => "x", "field2" => "y"))

に変換field = 'x' AND field2 = 'y'(自動エスケープあり)

$db->user()->select('username', 'pass')->where([
    'username' => $username,
    'pass' => $password
])
于 2019-03-26T14:23:12.600 に答える