-1
我有一种方法可以根据用户名从数据库中删除多个用户。用户名可以作为用户名或电子邮件提取,如果提供的话。我正在使用由作曲家构建的路线。当测试从邮差的路线,它工作得很好,但从我的网页调用路由时,我得到错误PHP - 不识别对象
{“invalid_email”:[],“invalid_username”:[“”]}
注意:试图让非对象的财产/Path/model/users.php上线
我不知道为什么,因为我从我的用户拉对象,它在之前的测试中起作用。
这是路由呼叫:
$app->delete("/multiple_users", function($request, $response, $args){
$body = $request->getParsedBody();
$sessionKey = $request->getQueryParams()['session_key'];
$sessionID = $request->getQueryParams()['session_id'];
$users = $body['users'];
global $database;
$statement = $database->prepare("SELECT * FROM session WHERE session_key = AND id = ?");
$statement->execute(array($sessionKey, $sessionID));
if($statement->rowCount()==0){
return send_error($response, "invalid admin session", 403);
}
$deletion_progress = User::delete_multiple_students($users);
return $response->withJSON($deletion_progress);
});
这是该方法示数:
public static function delete_multiple_students($users){
$invalid_users = array("invalid_email" => array(), "invalid_username" => array());
$usernames = explode(",", $users);
foreach($usernames as $username){
if (strpos($username, '@') !== false) {
if(!preg_match("/@email.address$/", $username)){
array_push($invalid_users["invalid_email"], $username);
}else{
$name = preg_replace("/@.+/", "", $username);
$user_id = self::get_by_username($name)->user_id; // error is right here when first in the list is a email
if (!$user_id){
array_push($invalid_users["invalid_email"], $username);
}
self::delete_student($user_id);
}
}else{
$user_id = self::get_by_username($username)->user_id; // error is right here when first in the list is a username
if (!$user_id){
array_push($invalid_users["invalid_username"], $username);
}
self::delete_student($user_id);
}
}
return $invalid_users;
}
这是参考所述get_by_username():
public static function get_by_username($username){
global $database;
$statement = $database->prepare("SELECT * FROM users WHERE username = ?");
$statement->execute(array($username));
$row = $statement->fetch(PDO::FETCH_ASSOC);
$statement->closeCursor();
if($row){
$user = new User($row);
return $user;
} else {
return null;
}
}
哪条线与错误有关? – nogad
您是否可以复制并粘贴原始错误信息 – eeetee
@nogad我评论了错误与哪条线相关 –