PHP知識點筆記


顯示錯誤:PDOException could not find driver.

是表示PDO沒有安裝對應數據庫的擴展,比如沒有安裝PDO_mysql

http://pecl.php.net/package/PDO_MYSQL

下載源碼

phpize

./configure --with-php-config=/usr/local/php/bin/php-config
./make

./make install 

phpExcel的使用需要使用到php的xmlreader和xmlwriter擴展

如果你是使用yum安裝php

就直接使用yum install php-xml來進行安裝

php的define不能重復定義

比如:

<?php

define("TEST", "11");

define("TEST", "22");

echo TEST;
 
[yejianfeng@xen193v ~/handcode]$ php test.php 

PHP Notice:  Constant TEST already defined in /home/yejianfeng/handcode/test.php on line 4

Notice: Constant TEST already defined in /home/yejianfeng/handcode/test.php on line 4

11

PHP如何獲取本地所有變量

$localVariables = compact(array_keys(get_defined_vars()));

安裝php模塊可以這么安裝

PHP_PDO_SHARED=1 pecl install pdo_mysql

mysql的字符編碼

mysql一般默認的客戶端字符編碼為:latin1

mysql的字符編碼有幾種:

mysql> show variables like "character_set_%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

其中信息輸入路徑是

client - connection - server

信息輸出路徑是

server - connection - result

輸入set names utf8是臨時設置client和connection的字符編碼

如何在PHP中初始化mysql的字符編碼?

有兩種方法可以初始化設置:

1

        $pdo = new PDO("mysql:host={$config['host']};dbname={$config['dbname']};port={$config['port']}", 

            $config['user'], $config['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

2

   $pdo = new PDO("mysql:host={$config['host']};dbname={$config['dbname']};port={$config['port']}", 

            $config['user'], $config['password']);

        $pdo->exec('set names utf8');

PHP的PDO擴展

a109e3e25047944f4114503e2d273599

使用php如果要使用PDO,你需要安裝的擴展除了PDO,還要各種數據庫的驅動,PDO擴展是定義了一系列接口,但是你不可以使用PDO擴展直接操作數據庫,需要安裝制定PDO驅動擴展

PDO擴展的說明:http://www.php.net/manual/en/intro.pdo.php

PDO擴展只能在PHP 5.0之上使用(使用了php的OO屬性)

針對不同的數據庫的擴展有:

1271fe0e34c447d27b6e9ca76a894420

為什么PDO的prepare不能打出最后的sql

使用PDO一直有一個郁悶的地方,就是使用prepare的時候想要將最后執行的sql打出來做log,發現沒有方法。。。

后來想了想,prepare是mysql的語句,那么PDO的prepare和execute實際上是對mysql發送了幾次請求,prepare,set,execute

mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|          5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;

所以,如果要打出log,只有自己拼sql了。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM