PHP - 如果路由 returns 字符串,则不进入循环
PHP - Not entering on the loop if route returns a string
我正在设置一个小型网络服务,如果它在数据库上找到用户,则应该 return true
,如果没有,则应该 false
。但它总是 returning false
。
事实上,如果我 echo
在 foreach
上有一些东西,它不会 return 任何东西,如果我回显 $data
我得到 Undefined variable: data
我试过用id搜索,好像没问题
例如,如果我使用 /api/users/login/{id}
的路由进行测试,并将 foreach
更改为 foreach($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);
}
});
问题是我要从路由中获取字符串吗?
如果是这样,我该如何纠正?
你对where()
的用法不对,你应该在条件数组中使用它。
来自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
])
我正在设置一个小型网络服务,如果它在数据库上找到用户,则应该 return true
,如果没有,则应该 false
。但它总是 returning false
。
事实上,如果我 echo
在 foreach
上有一些东西,它不会 return 任何东西,如果我回显 $data
我得到 Undefined variable: data
我试过用id搜索,好像没问题
例如,如果我使用 /api/users/login/{id}
的路由进行测试,并将 foreach
更改为 foreach($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);
}
});
问题是我要从路由中获取字符串吗? 如果是这样,我该如何纠正?
你对where()
的用法不对,你应该在条件数组中使用它。
来自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
])