pdo / mysqli 정리

PHP 2014. 12. 11. 18:18

2.2

- pdo_connect

$dsn = 'mysql:host=localhost;dbname=DBNAME';

$db = new PDO($dsn, 'USER', 'PASSWORD', array(

PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

));



2.3 

- pdo_loop

$sql = "SELECT name, meaning, gender FROM names";

foreach ($db->query($sql) as $row) {

echo $row['name'];

echo $row['meaning'];

echo $row['gender'];

}



2.4

- pdo_fetch

$sql = "SELECT name, meaning, gender FROM names";

$result = $db->query($sql);

while ($row = $result->fetch()) {

echo $row[0];

echo $row['meaning'];

}


- pdo_fetchAll

$sql = "SELECT name, meaning, gender FROM names";

$result = $db->query($sql);

$all = $result->fetchAll(PDO::FETCH_NUM);

print_r($all);


- pdo_fetchColumn

$sql = "SELECT name, meaning, gender FROM names";

$result = $db->query($sql);

while($col = $result->fetchColumn(1)) {

echo $col;

}



2.5

- pdo_rowcount

$sql = "select count(*) FROM names";

$result = $db->query($sql);

$numrows = $result->fetchColumn();


$sql = "SELECT name, meaning, gender FROM names";

$result = $db->query($sql);

$numrows = $result->rowCount();



2.6

- pdo_checkrow

$row = $result->fetch();

if (!$row) {

echo 'No results found';

}



2.7 

- query_insert

$sql = 'INSERT INTO names (name, meaning, gender) VALUES ("William", "resolute guardian", "boy")';

$result = $db->query($sql);

echo $result->queryString; // ==> INSERT INTO names (name, meaning, gender) VALUES ("William", "resolute guardian", "boy")


- exec_delete

$sql = 'DELETE FROM names WHERE name = "William"';

$affected = $db->exec($sql);


- exec_insert

$sql = 'INSERT INTO names (name, meaning, gender) VALUES ("William", "resolute guardian", "boy")';

$affected = $db->exec($sql);



2.8

- pdo_error

try {

$sql = ".....";

$result = $db->query($sql);

$errorInfo = $db->errorInfo();

print_r($errorInfo);

} catch (Exception $e) {

echo $e->getMessage();

}


- pdo_exception

try {

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

$sql = ".....";

$result = $db->query($sql);


} catch (Exception $e) {

echo $e->getMessage();

}



2.9 

- pdo_quote

        $searchterm = '%' . $_GET['searchterm'] . '%';

        $sql = 'SELECT name, meaning FROM names WHERE name LIKE ' . $db->quote($searchterm);

        $result = $db->query($sql);


//------------------------------------------


3.2

- pdo_named

        $sql = 'SELECT make, yearmade, mileage, price, description

                FROM cars

                LEFT JOIN makes USING (make_id)

                WHERE make LIKE :make AND yearmade >= :yearmade AND price <= :price

                ORDER BY price';

        $stmt = $db->prepare($sql);

        $stmt->bindValue(':make', '%' . $_GET['make'] . '%');

        $stmt->bindParam(':yearmade', $_GET['yearmade'], PDO::PARAM_INT);

        $stmt->bindParam(':price', $_GET['price'], PDO::PARAM_INT);

        $stmt->execute();

        $errorInfo = $stmt->errorInfo();

$row = $stmt->fetch();


do {

echo $row['make'];

echo $row['yearmade'];

} while ($row = $stmt->fetch());



3.3

- pdo_anonymous

        $stmt = $db->prepare($sql);

        $stmt->bindValue(1, '%' . $_GET['make'] . '%');

        $stmt->bindParam(2, $_GET['yearmade'], PDO::PARAM_INT);

        $stmt->bindParam(3, $_GET['price'], PDO::PARAM_INT);

        $stmt->execute();


3.4

- pdo_named_execute

        $sql = 'SELECT make, yearmade, mileage, price, description

                FROM cars

                LEFT JOIN makes USING (make_id)

                WHERE make LIKE :make AND yearmade >= :yearmade AND price <= :price

                ORDER BY price';

        $stmt = $db->prepare($sql);

        $values = array(':price' => $_GET['price'],

                        ':make' => '%' . $_GET['make'] . '%',

                        ':yearmade' => $_GET['yearmade']);

        $stmt->execute($values);



- pdo_anonymous_execute

        $sql = 'SELECT make, yearmade, mileage, price, description

                FROM cars

                LEFT JOIN makes USING (make_id)

                WHERE make LIKE ? AND yearmade >= ? AND price <= ?

                ORDER BY price';

        $stmt = $db->prepare($sql);

        $stmt->execute(array('%' . $_GET['make'] . '%', $_GET['yearmade'], $_GET['price']));



3.5 

- pdo_output

        $sql = 'SELECT make, yearmade, mileage, price, description

                FROM cars

                LEFT JOIN makes USING (make_id)

                WHERE make LIKE :make AND yearmade >= :yearmade AND price <= :price

                ORDER BY price';

        $stmt = $db->prepare($sql);

        $stmt->bindValue(':make', '%' . $_GET['make'] . '%');

        $stmt->bindParam(':yearmade', $_GET['yearmade'], PDO::PARAM_INT);

        $stmt->bindParam(':price', $_GET['price'], PDO::PARAM_INT);

        $stmt->execute();

        $stmt->bindColumn('make', $make);

        $stmt->bindColumn(2, $year);

        $stmt->bindColumn('mileage', $miles);

        $stmt->bindColumn('price', $price);

        $stmt->bindColumn('description', $desc);

        $errorInfo = $stmt->errorInfo();


$stmt->fetch(PDO::FETCH_BOUND);

do {

echo $make;

echo $year;

} while ($stmt->fetch(PDO::FETCH_BOUND));


- pdo_transaction

$amount = 200;

$payer = 'John White';

$payee = 'Jane Brown';

$debit = 'UPDATE savings SET balance = balance - :amount WHERE name = :payer';

$credit = 'UPDATE savings SET balance = balance + :amount WHERE name = :payee';


$pay = $db->prepare($debit);

$pay->bindParam(':amount', $amount);

$pay->bindParam(':payer', $payer);


$receive = $db->prepare($credit);

$receive->bindParam(':amount', $amount);

$receive->bindParam(':payee', $payee);


$db->beginTransaction();

$pay->execute();

if (!$pay->rowCount()) {

$db->rollBack();

$error = "Transaction failed: could not update $payer's balance.";

} else {

$receive->execute();

if (!$receive->rowCount()) {

   $db->rollBack();

   $error = "Transaction failed: could not update $payee's balance.";

} else {

   $db->commit();

}

}



3.7

- pdo_check_balance

...........................................

// Transaction

$db->beginTransaction();

$pay->execute();

if (!$pay->rowCount()) {

$db->rollBack();

$error = "Transaction failed: could not update $payer's balance.";

} else {

// Check the remaining balance in the payer's account

$check->execute();

$bal = $check->fetchColumn();

$check->closeCursor();


// Roll back the transaction if the balance is negative

if ($bal < 0) {

$db->rollBack();

$error = "Transaction failed: insufficient funds in $payer's account.";

} else {

$receive->execute();

if (!$receive->rowCount()) {

$db->rollBack();

$error = "Transaction failed: could not update $payee's balance.";

} else {

$db->commit();

}

}

}


//====================================


Car.php


4.1

- pdo_array

$sql = 'SELECT name, meaning FROM names';

$result = $db->query($sql);

$names = $result->fetchAll(PDO::FETCH_KEY_PAIR);


/*

==>

Array

(

   [Alice] => noble, light

   [Aubrey] => ruler of elves

   [Harry] => power, ruler

)

*/



4.2

- pdo_fetch_into


$car_id = 18;

$car = new Car($car_id); //<=== DataObject. 첨부파일. 


$sql = 'SELECT * FROM cars LEFT JOIN makes USING (make_id) WHERE car_id = ?';

$stmt = $db->prepare($sql);

$stmt->execute(array($car_id));

$stmt->setFetchMode(PDO::FETCH_INTO, $car);

$stmt->fetch();


// Display the car object

echo $car;



4.3

- pdo_fetch_class

$car_id = 25;


$sql = 'SELECT * FROM cars LEFT JOIN makes USING (make_id) WHERE car_id = ?';

$stmt = $db->prepare($sql);

$stmt->execute(array($car_id));


$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Car', array($car_id));

$car = $stmt->fetch();

echo $car;



4.4

- pdo_reuse

$sql = 'SELECT name, meaning FROM names ORDER BY name';

$result = $db->query($sql);

$names = $result->fetchAll(PDO::FETCH_ASSOC);

foreach ($names as $name) {

echo $name['name'];

}


reset($names);


foreach ($names as $name) {

echo $name['meaning'];

}


'PHP' 카테고리의 다른 글

구글 로그인  (0) 2013.09.09
codeigniter 1.7에서 GET변수 쓰기  (0) 2013.06.21
mobipicture 이미지 업로드  (2) 2013.03.01
트위터 api example  (1) 2013.02.24
페이스북 api examples  (0) 2013.02.24
날짜 처리 모음  (0) 2012.08.19
serialize, unserialize  (1) 2012.07.22
Vimeo 업로드 동영상  (0) 2012.06.12
cent nginx php-fpm  (3) 2012.01.11
nginx+mysql +php-fpm 연동 설치 및 nginx.conf 설정  (1) 2012.01.05
Posted by altvirus
,