In this tutorial, I will be showing you how to check if a row exists in MySQL. To do this, I will be using PHP’s popular PDO object.
First of all, let’s assume that we have a users table and that we want to check if a given email address already exists in our database.
Take a look at the following example:
//Connect to MySQL using the PDO object. $pdo = new PDO( "mysql:host=localhost;dbname=test", 'root', 'mypassword' ); //The email we are looking for. $emailToLookFor = '[email protected]'; //The SQL query. $sql = "SELECT COUNT(*) AS num FROM `users` WHERE email = :email"; //Prepare the SQL statement. $stmt = $pdo->prepare($sql); //Bind our email value to the :email parameter. $stmt->bindValue(':email', $emailToLookFor); //Execute the statement. $stmt->execute(); //Fetch the row / result. $row = $stmt->fetch(PDO::FETCH_ASSOC); //If num is bigger than 0, the email already exists. if($row['num'] > 0){ echo 'Row exists!'; } else{ echo 'Row does not exist!'; }
In the PHP example above, we:
- Connected to our MySQL database using PDO.
- Created an SELECT SQL query that uses MySQL’s COUNT function. This COUNT function will return the number of rows that match a certain WHERE condition. In this case, our WHERE condition is querying a column called email.
- Prepared our SQL statement using the PDO::prepare function.
- Binded the email address to the “:email” parameter in our SQL statement.
- Executed the statement.
- Returned the results of the statement using the PDOStatement::fetch function. I used the PDO::FETCH_ASSOC option because I wanted an associative array.
Finally, we checked to see if num in our $row array is bigger than zero. If it is bigger than zero, then it means that a row with that email address already exists.