2017 © Pedro Peláez
 

library php-pdo-mysql-class

A PHP MySQL PDO class similar to the the Python MySQLdb, which supports parameter binding when using 'WHERE IN' statement.

image

lincanbin/php-pdo-mysql-class

A PHP MySQL PDO class similar to the the Python MySQLdb, which supports parameter binding when using 'WHERE IN' statement.

  • Thursday, April 19, 2018
  • by lincanbin
  • Repository
  • 8 Watchers
  • 111 Stars
  • 249 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 64 Forks
  • 3 Open issues
  • 2 Versions
  • 9 % Grown

The README.md

PHP-PDO-MySQL-Class Build Status

A PHP MySQL PDO class similar to the Python MySQLdb, which supports iterator and parameter binding when using "WHERE IN" statement., (*1)

Install

Copy the files under src/ to your program, (*8)

OR, (*9)

composer require lincanbin/php-pdo-mysql-class

Initialize

<?php
define('DBHost', '127.0.0.1');
define('DBPort', 3306);
define('DBName', 'Database');
define('DBUser', 'root');
define('DBPassword', '');
require(__DIR__ . "/src/PDO.class.php");
$DB = new Db(DBHost, DBPort, DBName, DBUser, DBPassword);
?>

Preventing SQL Injection Attacks

Safety: Use parameter binding method

Safety Example:, (*10)

<?php
$DB->query("SELECT * FROM fruit WHERE name=?", array($_GET['name']));
?>

Unsafety: Split joint SQL string

Unsafety Example:, (*11)

<?php
$DB->query("SELECT * FROM fruit WHERE name=".$_GET['name']);
?>

Basic Usage

table "fruit"

id name color
1 apple red
2 banana yellow
3 watermelon green
4 pear yellow
5 strawberry red

Fetching with Bindings (ANTI-SQL-INJECTION):

<?php
$DB->query("SELECT * FROM fruit WHERE name=? and color=?",array('apple','red'));
$DB->query("SELECT * FROM fruit WHERE name=:name and color=:color",array('name'=>'apple','color'=>'red'));
?>

Result:, (*12)

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
            [color] => red
        )
)

WHERE IN (needs named placeholder):

<?php
$DB->query("SELECT * FROM fruit WHERE name IN (:fruits)",array(array('apple','banana')));
?>

Result:, (*13)

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
            [color] => red
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
            [color] => yellow
        )
)
<?php
$query = "SELECT * FROM fruit WHERE name IN (:fruits) AND color = :color";
// use multidimensional array as $params
$params = array(
    "color" => "red",
    "fruits" => array(
        "apple",
        "banana"
    )
);
$DB->query($query, $params);
?>

Result:, (*14)

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
            [color] => red
        )
)

Fetching Column:

<?php
$DB->column("SELECT color FROM fruit WHERE name IN (:color)",array('apple','banana','watermelon'));
?>

Result:, (*15)

Array
(
    [0] => red
    [1] => yellow
    [2] => green
)

Fetching Row:

<?php
$DB->row("SELECT * FROM fruit WHERE name=? and color=?",array('apple','red'));
?>

Result:, (*16)

Array
(
    [id] => 1
    [name] => apple
    [color] => red
)

Fetching single:

<?php
$DB->single("SELECT color FROM fruit WHERE name=? ",array('watermelon'));
?>

Result:, (*17)

green

Delete / Update / Insert

These operations will return the number of affected result set. (integer), (*18)

<?php
// Delete
$DB->query("DELETE FROM fruit WHERE id = :id", array("id"=>"1"));
$DB->query("DELETE FROM fruit WHERE id = ?", array("1"));
// Update
$DB->query("UPDATE fruit SET color = :color WHERE name = :name", array("name"=>"strawberry","color"=>"yellow"));
$DB->query("UPDATE fruit SET color = ? WHERE name = ?", array("yellow","strawberry"));
// Insert
$DB->query("INSERT INTO fruit(id,name,color) VALUES(?,?,?)", array(null,"mango","yellow"));//Parameters must be ordered
$DB->query("INSERT INTO fruit(id,name,color) VALUES(:id,:name,:color)", array("color"=>"yellow","name"=>"mango","id"=>null));//Parameters order free
?>

Get Last Insert ID

<?php
$DB->lastInsertId();
?>

Get the number of queries since the object initialization

<?php
$DB->querycount;
?>

Close Connection

<?php
$DB->closeConnection();
?>

Transaction

<?php
try {
    $DB->beginTransaction();
    var_dump($DB->inTransaction()); // print "true"
    $DB->commit();
} catch(Exception $ex) {
    // handle Error
    $DB->rollBack();
}
?>

Iterator

Use iterator when you want to read thousands of data from the database for statistical or full update of Elastic Search or Solr indexes., (*19)

Iterator is a traversable object that does not read all the data queried from MySQL into memory., (*20)

So you can safely use foreach to handle millions of MySQL result sets without worrying about excessive memory usage., (*21)

Example:, (*22)

$iteratorInstance = $DB->iterator("SELECT * FROM fruit limit 0, 1000000;");
$colorCountMap = array(
    'red' => 0,
    'yellow' => 0,
    'green' => 0
);
foreach($iteratorInstance as $key => $value) {
    sendDataToElasticSearch($key, $value);
    $colorCountMap[$value['color']]++;
}
var_export($colorCountMap);

Return:, (*23)

array(3) {
  [red] => 2
  [yellow] => 2
  [green] => 1
}

The Versions

19/04 2018

dev-master

9999999-dev

A PHP MySQL PDO class similar to the the Python MySQLdb, which supports parameter binding when using 'WHERE IN' statement.

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.6

 

by Avatar lincanbin

database pdo mysql

30/04 2015

v1.0

1.0.0.0

A PHP MySQL PDO class similar to the the Python MySQLdb, which supports parameter binding when using 'WHERE IN' statement.

  Sources   Download

Apache

The Requires

  • php >=5.3.6

 

by Avatar lincanbin

database pdo mysql