Php-mysql Course

When you perform a SELECT SQL query with PDO prepare() - execute() statements, the values of the columns in the result set are string type. Even if the columns in MySQL table contain numeric type values: integer (INT), or float (FLOAT /DECIMAL /DOUBLE), the values in the result set returned by PDO are string.
- The following example shows the data type and values of a SELECT query executed with PDO prepare() and execute().
<?php
// Connection data (server_address, database, name, poassword)
$hostdb = 'localhost';
$namedb = 'tests';
$userdb = 'root';
$passdb = 'pass';

try {
  // Connect and create the PDO object
  $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
  $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

  // Define the SQL statement that will be applied in prepare()
  $sql = "SELECT `id`, `name` FROM `users` WHERE `name`= :name LIMIT 1";
  $sqlprep = $conn->prepare($sql);        // Prepares and stores the SQL statement in $sqlprep

  $name = array('name'=>'admin');             // the value for ":name"
  // If the prepared SQL is succesfully executed, store the result set into a variable
  if($sqlprep->execute($name)) {
    $row = $sqlprep->fetchAll(PDO::FETCH_ASSOC);
  }
}
catch(PDOException $e) {
  $row = $e->getMessage();
}

var_dump($row);          // debug /show the result
?>
Debugged with var_dump(), shows this result:
array(1) { [0]=> array(2) { ["id"]=> string(1) "5" ["name"]=> string(5) "admin" } }
- As you can notice, the "id" value is returned as a string ("5"), but in the MySQL table, the "id" column is INT().

This conversion (numeric to string) in the result set can cause problems if we want to perform some PHP instructions according to exact value and data type of the "id" (when the equality is checked with three equal signs "===").
Example:
if($row[0]['id'] === 5) echo 'ID correct';
else echo 'The ID - '.$row[0]['id'].' not equal to 5';
- Because the value of the if($row[0]['id'] is "5" (not numeric 5), the code above will output:
The ID - 5 not equal to 5

If the equality is checked using two equal signs (==), it result: ID correct , because the "==" checks only the value, not data type.
But sometimes we must check data using the "===", especially when checks 0 against empty or null value.
So, the correct way is to have the numbers stored in numeric data type variables.

• Here's how you can have the numbers in the PDO result set returned as numeric type.
The following function (executeSQL()) receives a PDO object with the connection to MySQL database ($conn), and the SQL command ($sql). Stores each row into an array. Uses a foreach() loop, and the is_numeric() function to check the value of each column, if it's a number (integer, or float) adds 0, this will convert the string value into an integer, or float, without to modify the value.
This function returns the result set with the correct data type.
<?php
// execute SQL command and return the result set ( https://coursesweb.net )
function executeSQL($conn, $sql) {
  // prepare and execute the $sql query
  try {
    $reout = array();
    $sqlprep = $conn->prepare($sql);

    if($sqlprep->execute()) {
      // if fetch() returns at least one row (not false), adds the rows in $reout for return
      if(($row = $sqlprep->fetch(PDO::FETCH_ASSOC)) !== false){
        do {
          // check each column if it has numeric value, to cenvert it from "string"
          foreach($row AS $k=>$v) {
            if(is_numeric($v)) $row[$k] = $v + 0;
          }
          $reout[] = $row;
        }
        while($row = $sqlprep->fetch(PDO::FETCH_ASSOC));
      }
    } else {
      $eror = $conn->errorInfo();
      $reout[] = 'Error: '. $eror[2];
    }
  }
  catch(PDOException $e) {
    $reout[] = $e->getMessage();
  }

  return $reout;
}

// Connection data (server_address, database, name, poassword)
$hostdb = 'localhost';
$namedb = 'tests';
$userdb = 'root';
$passdb = 'pass';

// Connect and create the PDO object
try {
  $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
  $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
}
catch(PDOException $e) {
  $row = $e->getMessage();
}
// define the Select query, and calls the executeSQL() to get the selected rows
$sql = "SELECT `id`, `name` FROM `users` WHERE `name`='admin' LIMIT 1";
$rows = executeSQL($conn, $sql);

var_dump($rows);              // debug /show the result
?>
Result:
array(1) { [0]=> array(2) { ["id"]=> int(5) ["name"]=> string(5) "admin" } }
- As you can notice, this time the "id" is stored as integer (5).

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which attribute can be used to add CSS styles directly in the HTML tag?
type style class
<div style="width: 80%; border: 3px solid #888888;">Content</div>
Which CSS transform method distorts the HTML element in a given angle (including its content)?
translate() scale() skew()
#some_id {
  transform: skew(20deg, 25deg);
  -ms-transform: skew(20deg, 25deg);   /* IE 9 */
  -webkit-transform: skew(20deg, 25deg);   /* Safari and Chrome */
}
Click on the function which converts a Date object to a string.
indexOf() toString() getDate()
var rightnow = new Date();
alert( rightnow.toString() );
Which function applies a callback function to the elements of the given array?
array_merge() array_search() array_map()
$arr = arra("abc", "<p>xyz</p>", "<em>PHP</em>");
// apply the strip_tags() function to delete HTML tags from each array item
$arr = array_map("strip_tags", $arr);
}
Integer and Float value in Select with PDO from string to numeric

Last accessed pages

  1. PHP-MySQL free course, online tutorials PHP MySQL code (69696)
  2. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (144476)
  3. HTML Course - Free Lessons (26061)
  4. Check if table exists in database (10188)
  5. Disable button and Enable it after specified time (17629)

Popular pages this month

  1. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (110)
  2. PHP-MySQL free course, online tutorials PHP MySQL code (31)
  3. CSS cursor property - Custom Cursors (27)
  4. The Mastery of Love (19)
  5. Read Excel file data in PHP - PhpExcelReader (18)
Chat
Chat or leave a message for the other users
Full screenInchide