需要向此文件和if语句添加count(*)

When I change SELECT * to SELECT count(*) the script stops working altogether. How to I add a count(*) to this file and a statement if row count for $user >= 20 allow to INSERT else do nothing.

// Include needed files

include 'mysql.php';

// Connect to MySQL

connectMySQL();

//****** SECURITY CHECK *********

session_start();
if(isset($_SESSION['userid'])){
$user = mysql_real_escape_string($_SESSION['userid']); 

//*******************************

  // Retrieves variables through AJAX

$favid = mysql_real_escape_string($_GET['favid']);
// $favid = mysql_real_escape_string($_GET['favid']);

// Firstly, check if article is favourite or not

$query = mysql_query("SELECT * FROM ajaxfavourites WHERE user='$user' AND  favid='$favid'");
$matches = mysql_num_rows($query);

// If it is not favourited, add as favourite

if($matches == '0'){
mysql_query("INSERT INTO ajaxfavourites (user, favid, exptime) VALUES ('$user', '$favid', CURRENT_TIMESTAMP)");

echo "";
}


// Instead, if it is favourited, then remove from favourites

if($matches != '0'){
mysql_query("DELETE FROM ajaxfavourites WHERE user='$user' AND favid='$favid'");

echo "";
}

} else {

// Someone tries to directly access the file!

echo "Invalid session!";

}

Thanks!

try to use below query, using below query if requested user's session will be 20+ then only insert statement will execute else insert statement will be ignore.

INSERT INTO ajaxfavourites(USER,favid ,exptime)  
SELECT  1 AS USER, 1 AS favid, NOW() AS exptime
FROM ajaxfavourites WHERE USER=1  HAVING COUNT(*) >=20;

Please do necessary steps to avoid SQL injection, also try using mysqli_* functions instead of mysql_* functions

$query = mysql_query("SELECT COUNT(*) as cnt FROM ajaxfavourites WHERE user='$user' AND  favid='$favid'");
$res = mysql_fetch_array($query);

// If it is not favourited, add as favourite

if($res[cnt] == 0){
    mysql_query("INSERT INTO ajaxfavourites (user, favid, exptime) VALUES ('$user', '$favid', CURRENT_TIMESTAMP)");

    echo "";
}

// Instead, if it is favourited, then remove from favourites

if($res[cnt] > 0){
    mysql_query("DELETE FROM ajaxfavourites WHERE user='$user' AND favid='$favid'");

    echo "";
}

I got it resolved. The reason it wasn't working was it took both values into consideration ($user and $favid). As a result it was always either 0 or 1.

I had to create another mysql query with just one value in it ($user) and then I was able to get the row count. Thanks everyone!