mysql_query will return the resource of the executed query, not the data. You have to fetch it -
$query="select count(name) from selection where salary>2000 and job='teacher' ";
$result=mysql_query($query);
$key = mysql_fetch_array($result);
echo $key['count(name)'];
mysql is deprecated now. Use mysqli or PDO instead.
Return
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.
Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.
mysql_query() will also fail and return FALSE if the user does not have permission to access the table(s) referenced by the query.
queryor therecords? Also never use mysql_* as it is depreciated