I have just changed my database connection. I am not used to the PDO class or OOP yet. Anyway, I connect to the db like this:
$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME;
try
{
$this->db = new PDO($dsn, DB_USER, DB_PASS);
}
catch ( Exception $e )
{
die ( $e->getMessage() );
}
I am trying to get number of rows from this query:
$ip = $this->ip();
$sql = "SELECT `id` FROM `login_failed`
WHERE `ip` = :ip AND `time` BETWEEN NOW( ) - INTERVAL 120 MINUTE AND NOW( )
LIMIT 3";
try
{
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':ip', $ip, PDO::PARAM_STR);
$result = $stmt->execute(); // $result = true
$n = $stmt->num_rows ; // n = NULL?
$stmt->closeCursor();
}
catch (Exception $e)
{
die ($e->getMessage() );
}
In phpmyadmin I get a result so my query is correct, but $n is NULL for some reason.. How do I get number of rows with PDO
$stmtis of typePDOStatement. That class has nonum_rowsproperty.You might be looking for
rowCountinstead, but the documentation for that states:The long and the short if it is that, if you want to actually
SELECTall that data, you can reliably determine how many rows were returned by iterating over the result set (or just callfetchAlland count the items in the array). If you don’t need the data but just a number, useSELECT COUNTinstead.So, to count the rows without changing the query: