-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我評論了錯誤與哪條線相關 –