-1

I got an array taken from an mysqli query, this array contain a list of tasks. I must to count how many tasks is in the array ( so only the number of row ) and put in a icon badge as a human readable number.

     try {
    $db = new PDO("mysql:host=127.0.0.1;dbname=c9", "andreaem_dev", "");

    //echo "Connected to database<br/>"; // check for connection

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    $sql = "SELECT ID FROM data_tasks WHERE data_tasks . user = 'admin'"; //I'm selecting ID so only one element on the row is count
    $result = $db->query($sql);
    foreach ($result as $row) {

            $row = $result->fetch(PDO::FETCH_NUM);
            echo $row[0];
        }

    $db = null; // close the database connection

}

catch(PDOException $e) {
    echo $e->getMessage();
}

With this code i get a int(2) response, the array contains 5 element and i don't know where it takes '2', even i must to convert it in a number.

Thanks in advice for help!

AndreaEM
  • 13
  • 4

1 Answers1

1

*sigh*

You need to use count() function in mysql. this is how databases intended to work: they count your data for you. You don't need to count by hand. You don't need to select id. You don't need to loop over results. You don't need to convert number to string. You just have to ask database to count and then get the result.

$db = new PDO("mysql:host=127.0.0.1;dbname=c9", "andreaem_dev", "");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT count(*) FROM data_tasks WHERE user = 'admin'";
$count = $db->query($sql)->fetchColumn();
Your Common Sense
  • 156,878
  • 40
  • 214
  • 345