[PHP]View Plaincopyprint?
- <?php
- $DBH = New PDO (' Mysql:host=localhost;dbname=access_control ', ' root ', ' );
- $DBH->setattribute (Pdo::attr_errmode, pdo::errmode_exception);
- $DBH, EXEC (' Set names UTF8 ');
- /* Add */
- $sql = "INSERT into ' user ' SET ' login ' =:login and ' password ' =:p assword";
- $sql = "INSERT into ' user ' (' login ', ' password ') VALUES (: Login,:p assword)"; $stmt = $dbh->prepare ($sql); $stmt->execute (': Login ' = 'kevin2 ',':p assword ' = ') ');
- echo $dbh->lastinsertid ();
- /* Modify */
- $sql = "UPDATE ' user ' SET ' password ' =:p assword WHERE ' user_id ' =:userid";
- $stmt = $dbh->prepare ($sql);
- $stmt->execute (Array (': userId ' = '7 ', ':p assword ' =') 4607e782c4d86fd5364d7e4508bb10d9 '));
- echo $stmt->rowcount ();
- /* Delete */
- $sql = "DELETE from ' user ' WHERE ' login ' like ' kevin_ '"; //kevin%
- $stmt = $dbh->prepare ($sql);
- $stmt->execute ();
- echo $stmt->rowcount ();
- /* Query */
- $login = ' kevin% ';
- $sql = "select * from ' user ' WHERE ' login ' Like:login";
- $stmt = $dbh->prepare ($sql);
- $stmt->execute (Array (': Login ' =$login));
- while ($row = $stmt->fetch (PDO::FETCH_ASSOC)) {
- Print_r ($row);
- }
- Print_r ( $stmt->fetchall (PDO::FETCH_ASSOC));
- ?>
1 Establishing the connection
[PHP]View Plaincopyprint?
- <?php
- $DBH =newpdo (' mysql:host=localhost;port=3306; Dbname=test ',$user,$pass,Array (
- Pdo::attr_persistent=>true
- ));
- ?>
Persistent link Pdo::attr_persistent=>true
2. Catching errors
[PHP]View Plaincopyprint?
- <?php
- try{
- $DBH =newpdo (' mysql:host=localhost;dbname=test ',$user,$pass);
- $DBH->setattribute (pdo::attr_errmode,pdo::errmode_exception);
- exec, $DBH ("set CHARACTER set UTF8");
- $DBH =null; //Disconnect
- }catch (pdoexception$e) {
- Print"error!:". $e->getmessage (). "<br/>";
- Die ();
- }
- ?>
3. The Business
[PHP]View Plaincopyprint?
- <?php
- try{
- $DBH->setattribute (pdo::attr_errmode,pdo::errmode_exception);
- $DBH->begintransaction (); //Open transaction
- exec (Insertintostaff (id,first,last) VALUES (at $, ' Joe ', ' Bloggs '), $DBH.
- exec, $DBH ("Insertintosalarychange (id,amount,changedate)
- VALUES (23,50000,now ()) ");
- $DBH->commit (); //Commit a transaction
- }catch (Exception$e) {
- $DBH->rollback (); //Error rollback
- Echo"Failed:". $e->getmessage ();
- }
- ?>
4. Error handling
A. Silent mode (default mode)
$DBH->setattribute (pdo::attr_errmode,pdo::errmode_silent); Do not display errors
$DBH->setattribute (Pdo::attr_errmode, pdo::errmode_warning);//Display warning error, and continue execution
$DBH->setattribute (pdo::attr_errmode,pdo::errmode_exception);//Generate fatal error, pdoexception
[PHP]View Plaincopyprint?
- <?php
- try{
- $DBH = new PDO ($dsn, $user, $password);
- $sql = ' Select * from city where CountryCode =:country ';
- $dbh->setattribute (Pdo::attr_errmode, pdo::errmode_warning);
- $stmt = $dbh->prepare ($sql);
- $stmt->bindparam (': Country ', $country, PDO::P aram_str);
- $stmt->execute ();
- While ($row = $stmt->fetch (PDO::FETCH_ASSOC)) {
- Print $row [' Name ']. "/t";
- }
- } //If there is a problem we can handle it here
- catch (pdoexception $e) {
- echo ' PDO Exception caught. ‘;
- echo ' Error with the database: <br/> ';
- echo ' SQL Query: ', $sql;
- echo ' Error: '. $e->getmessage ();
- }
- ?>
1. Use Query ()
[PHP]View Plaincopyprint?
- <?php
- $DBH->query ($sql), when the variables in the $sql can be $dbh->quote ($params); //Escape string data
- $sql = ' Select * from city where CountryCode = '. $DBH->quote ($country);
- foreach ($dbh->query ($sql) as $row) {
- Print $row [' Name ']. "/t";
- Print $row [' CountryCode ']. "/t";
- Print $row [' Population ']. "/n";
- }
- ?>
2. Use prepare, Bindparam and execute [recommended, and can be added, modified, deleted]
[PHP]View Plaincopyprint?
- <?php
- $DBH->prepare ($sql); A Pdostatement object was created
- Pdostatement->bindparam ()
- Pdostatement->execute (); //You can put the corresponding variable in the binding here
- ?>
3. Things
[PHP]View Plaincopyprint?
- <?php
- try {
- $DBH = new PDO (' mysql:host=localhost;dbname=test ', ' root ', ' );
- $dbh->query (' Set names utf8; ');
- $dbh->setattribute (Pdo::attr_errmode, pdo::errmode_exception);
- $dbh->begintransaction ();
- $DBH,exec ("Insert into ' test ') ' table ' (' Name ', ' age ') VALUES (' Mick ', 22);");
- $DBH,exec ("Insert into ' test ') ' table ' (' Name ', ' age ') VALUES (' Lily ', 29);");
- $DBH,exec ("Insert into ' test ') ' table ' (' Name ', ' age ') VALUES (' Susan ', 21);");
- $dbh->commit ();
- } catch (Exception $e) {
- $dbh->rollback ();
- echo "Failed:". $e->getmessage ();
- }
- ?>
PDO Common methods:
Pdo::query () is primarily used for operations (pdostatement) that have logged results returned, especially for select operations.
Pdo::exec () is primarily for operations returned without a result set. such as Insert,update and other operations. Returns the number of affected rows.
Pdo::lastinsertid () returns the last ID of the last insert operation, but note that if you use INSERT into TB (col1,col2) VALUES (V1,V2), (V11,V22): By inserting multiple records at once, Lastinsertid () returns only the ID of the first (V1,V2) insert, not the record ID that was inserted in the last record.
Pdostatement::fetch () is used to get a record. With while to traverse.
Pdostatement::fetchall () is to get all recordsets into one.
Pdostatement::fetchcolumn ([int column_indexnum]) is used for direct access to the column, and the parameter column_indexnum is the 0-based index value in the row of the column, but this method can only get one row at a time. Once executed, jump to the next line. Therefore, it is better to use for direct access to a column, but it is not useful to traverse multiple columns.
Pdostatement::rowcount () is used when using the query ("SELECT ...") method to get the number of records. can also be used in preprocessing. $stmt->rowcount ();
Pdostatement::columncount () is used when using the query ("SELECT ...") method to get the number of columns of a record.
Annotations:
1, pick or fetchall?
Small record set, with fetchall efficiency, reduce the number of retrieval from the database, but for large result sets, with Fetchall to the system brings a great burden. The database is too large to transmit to the web front end and inefficient.
2. Fetch () or Fetchall () has several parameters:
Mixed Pdostatement::fetch ([int fetch_style [, int cursor_orientation [, int cursor_offset]])
Array pdostatement::fetchall (int fetch_style)
Fetch_style Parameters:
$row = $rs->fetchall (pdo::fetch_both); Fetch_both is the default, can be saved, returns associations and indexes.
$row = $rs->fetchall (PDO::FETCH_ASSOC); The FETCH_ASSOC parameter determines that only the associative array is returned.
$row = $rs->fetchall (pdo::fetch_num); Returns an indexed array
$row = $rs->fetchall (pdo::fetch_obj); If fetch () returns the object, and if it is Fetchall (), returns a two-dimensional array consisting of the object
PHP MySQL PDO use