'?'
này không phải là một trình giữ chỗ, nó là một dấu chấm hỏi theo nghĩa đen. Phần giữ chỗ không được trích dẫn. Cũng giống như bạn có hai trình giữ chỗ và ba giá trị cố gắng bị ràng buộc.
Vì vậy, hãy thử:
$sth = $dbh->prepare("SELECT users.userID,fname,lname,status FROM users INNER JOIN friends ON users.userID = friends.friendID WHERE friends.userID = ? AND ((friends.status LIKE 'group%' OR friends.status = 'friends') OR (users.status = ?) OR (users.userID = ?)) ORDER BY friends.status,lname,fname ASC");