I try to execute the following, what am I missing here ?
DELETE FROM escrow WHERE host = '$name' OR challenger = '$name' AND id='$match_id'
I try to execute the following, what am I missing here ?
DELETE FROM escrow WHERE host = '$name' OR challenger = '$name' AND id='$match_id'
When you use AND and OR together in any circumstances in any programming language ALWAYS use brackets. There is an implicit order which gets evaluated first (the AND or the OR condition) but you usually don't know the order and shouldn't be in need to look it up in the manual
Also use Prepared statements for SQL queries which depends on variables.
In your case you either write
... WHERE (host = ? OR challenger = ?) AND id = ?
or
... WHERE host = ? OR (challenger = ? AND id = ?)
depending on what condition you want.
Also, when a SQL query fails for whatever reason check the error message you get from the database. It will tell you whats wrong with the query. However, a valid query which returns no rows (because the WHERE condition don't match for any row) is still a valid query and not an error, the result is just empty.