In the previous article, I brought you " How to handle errors in PDO for PHP database learning? ", which introduces the relevant knowledge of PDO error handling in PHP in detail. In this article, let's take a look at how to set and obtain PDO attributes in PHP. I hope everyone has to help!
In the previous article we learned about the issues related to PDO error handling in PHP, then let’s learn how to set and obtain PDO attributes. There are many properties in the PDO object that can be used to adjust the behavior of the PDO or obtain the underlying driver state.
If there is no attribute option set in the last parameter in the constructor when creating a PDO object, you can use setAttribute()
and # in the PDO object after the object is created. ##getAttribute() Method to set and get the values of these attributes. Then let us take a look at these two methods together.
<strong>getAttribute()<span style="font-size: 20px;"></span></strong>
Method
getAttribute () The method only needs to provide one parameter, and can pass a specific attribute name representing this parameter. After successful execution, it will return the value specified by the attribute, otherwise it will return NULL. It is easy to understand. Its syntax format is as follows:
PDO::getAttribute(int $attribute)
$attribute is
PDO::ATTR_* One of the constants. There are many constants applied to database connections.
<?php header("Content-Type: text/html;charset=utf-8"); $opt = [PDO::ATTR_PERSISTENT=>TRUE]; try{ $pdo = new PDO('mysql:dbname=test;host=127.0.0.1','root','root',$opt); }catch(PDOException $e){ echo '数据库连接失败:'.$e->getMessage(); exit(); } echo 'PDO 是否关闭自动提交功能:'.$pdo -> getAttribute(PDO::ATTR_AUTOCOMMIT); echo '<br>当前 PDO 的错误处理模式:'.$pdo -> getAttribute(PDO::ATTR_ERRMODE); echo '<br>表字段字符的大小写转换:'.$pdo -> getAttribute(PDO::ATTR_CASE); echo '<br>空字符串转换为 SQL 的 null:'.$pdo -> getAttribute(PDO::ATTR_ORACLE_NULLS); echo '<br>应用程序提前获取数据大小:'.$pdo -> getAttribute(PDO::ATTR_PERSISTENT); ?>
PDO::ATTR_AUTOCOMMIT indicates whether PDO turns off the automatic submission function,
PDO::ATTR_ERRMODE represents the current PDO error handling mode,
PDO::ATTR_CASE represents the case conversion of table field characters,
PDO::ATTR_ORACLE_NULLS It means that the empty string is converted into SQL null,
PDO::ATTR_PERSISTENT means that the application obtains the data size in advance.
PDO::ATTR_CONNECTION_STATUS Represents unique information related to the connection status.
PDO::ATTR_SERVER_INFO Represents database-specific server information.
PDO::ATTR_SERVER_VERSION Represents the database server version number.
PDO::ATTR_CLIENT_VERSION Represents the database client version number.
<strong>setAttribute()<span style="font-size: 20px;"></span></strong>
Method
setAttribute () The method can be used to set the attributes of the database handle. setAttribute() is slightly more complicated than getAttribute(). Its syntax format is as follows:
PDO::setAttribute(int $attribute, mixed $value)
$attribute provides the specific attribute name of the PDO object, and the second parameter
$value is Assigns a value to this specified property.
PDO::ATTR_CASE means that the column name can be forced to be in the specified case, where PDO::CASE_LOWER means that the column name is forced to be lowercase; PDO::CASE_NATURAL means that the column name returned by the database driver is retained. ;PDO::CASE_UPPER means forcing column names to be uppercase.
PDO::ATTR_ERRMODE represents an error report, where PDO::ERRMODE_SILENT represents only setting the error code; PDO::ERRMODE_WARNING represents causing an E_WARNING error; PDO::ERRMODE_EXCEPTION represents throwing exceptions Exceptions.
PDO::ATTR_ORACLE_NULLS means available in all drivers, not limited to Oracle, converts NULL and empty strings, where PDO::NULL_NATURAL means no conversion; PDO::NULL_EMPTY_STRING It means converting an empty string into NULL; PDO::NULL_TO_STRING means converting NULL into an empty string.
<?php header("Content-Type: text/html;charset=utf-8"); $pdo = new PDO('mysql:dbname=test;host=127.0.0.1','root','root',$opt); $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); echo 'PDO::ATTR_CASE属性的值为:'.$pdo -> getAttribute(PDO::ATTR_CASE); $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); echo '<br>PDO::ATTR_CASE属性的值为:'.$pdo -> getAttribute(PDO::ATTR_CASE); $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL); echo '<br>PDO::ATTR_CASE属性的值为:'.$pdo -> getAttribute(PDO::ATTR_CASE); ?>
In the above example, the attributes of the database handle are set by using the setAttribute() method. Next, I will sort out the available common attribute names and the values that can be used:
PDO::ATTR_STRINGIFY_FETCHES
means converting the value into a string when extracting;
PDO::ATTR_STATEMENT_CLASS
Represents setting a user-provided statement class derived from PDOStatement. Cannot be used with persistent PDO instances.
PDO::ATTR_AUTOCOMMIT
Indicates whether to automatically submit each individual statement. It is available in OCI, Firebird and MySQL.
PDO::ATTR_DEFAULT_FETCH_MODE
Indicates setting the default extraction mode.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
indicates the use of buffered queries, which is available in the MySQL database.
We also need to pay attention to the following: PDO::ATTR_TIMEOUT
Indicates the number of seconds for the specified timeout. There may be differences between different drivers. For example, SQLite will give up acquiring a writable lock after waiting for this value, but other drivers may interpret this value as a connection or read timeout interval;
PDO::ATTR_EMULATE_PREPARES
Indicates enabling or disabling the simulation of prepared statements. Some drivers have no or limited support for local preprocessing. Use this setting to force PDO to always emulate prepared statements, or to try to use local prepared statements. If the driver cannot successfully prepare the current query, it will always fall back to simulating prepared statements.
If you are interested, you can click on "PHP Video Tutorial" to learn more about PHP knowledge.
The above is the detailed content of How to set and obtain PDO attributes in PHP database learning?. For more information, please follow other related articles on the PHP Chinese website!