PHP 連接 MySQL 可以很簡單直接地 mysql_connect() 或 mysqli_connect(), 那麼為什麼是要 PDO? PDO 是功能更為強大的資料庫 API, 即使將來要轉換資料庫系統, 只需更改連接的參數, 不需每個出現 mysql_* 函式的程式碼都修改, 以往要做到這樣, 通常是寫一個簡單的連接 MySQL class, 或者直接用 ADOdb 之類來做。 另一個優點是 PDO 會自動將用戶的輸入清理乾淨, 即防止 SQL …
要儲存一些敏感的資料在檔案或資料庫, 基於安全考慮還是將資料加密, 在需要時再進行解讀, 在 PHP 5.5 開始內建了加密函式 password_hash(), 操作上簡單了不少。如果在其他 PHP 版本, 便需要載入加密的相關模組, 以下是不同版本實現的方法: PHP 5.5 或以上: 要驗證用戶輸入的密碼, 可以用 password_verify(): 未到 PHP 5.5, 但在 5.3.7 或以上 (包括 Redhat PHP 5.3.3 …
PHP 在 5.3 前要計算日期很麻煩, 在 PHP 5.3 開始已經內建相關函式, 計算日期變得簡單很多, 例如要計算兩個日期的差距, 可以這樣: 而且輸入的日期格式限制很少, 例如上面的日期格式可以輸入 2015-05-12, 或者 12-05-2015 也可以。 上面的例子是計算兩個日期相距的天數, 如果要計算往後 X 天的日期, 可以這樣做:
有時需要在不同 MySQL 版本間做測試, 如果要在伺服器內重啟 MySQL 切換版本做測試會很麻煩, 以下紀錄一下在伺服器內安裝兩個 MySQL 同時運行, 當然如果有需要, 也可以按此方法安裝 2 個以上的 MySQL。 以下假設第一個 MySQL Server 已經正常運作, 下面全是安裝第二個 MySQL Server 的步驟: 1. 建立 MySQL 資料庫目錄: # mkdir /var/lib/mysql2 …
MySQL 的預設埠號是 3306, 要變更埠號可以有很多原因, 例如基於安全考量或者同時安全兩個 MySQL Server 等, 以下是變更埠號的方法: 1. 開啟 my.cnf 檔案, Redhat 及 CentOS 開 /etc/my.cnf, Debian 放在 /etc/mysql/my.cnf。 加入以下這行到 段落, 如果已經有 port 的選項, 直接修改便可以, 下面會將埠號改為 3307: …
PIP 是 Python 的套件管理工具, 以下紀錄一下在 RHEL / CentOS 安裝 PIP 的方法: 首先要安裝 EPEL repo, 不同版本需要安裝不同的 rpm: RHEL / CentOS 7.x (x86_64) rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm RHEL / CentOS 6.x (x86_64) …
MySQL 資料庫出現重複資料時, 找出重複資料的方法有很多, 以下介紹兩種常用的方法: 找出重複的紀錄, 以 cid 欄位作為判斷, 會輸出 cutomer_id 及出現次數: SELECT cid, COUNT(*) FROM customer GROUP BY cid HAVING COUNT(*) > 1 不是顯示出現次數, 而是將重複的資料全部輸出: select * from customer …
要檢查 Email 及 URL 格式可以用正規表達式來做, 以下兩個正規表達式分別可以檢查 Email 及 URL 的格式是否正確。但要留意, 以下程式碼只會檢查格式, 而不會檢查兩者的有效性, 要檢查有效性及真實性需要用其他方法。 PHP 檢查 Email 格式 PHP 檢查 URL 格式
PHP 執行時如果出現 Allowed memory size of xxxxxx bytes exhausted 錯誤, 即執行 PHP 時使用過多記憶體, 起出了 php.ini 設定的限制, 解決方法是修改 php.ini 的 memory_limit 參數, 如果是 Redhat / CentOS / Fedora 用 yum …
如果不小心將有用的資料錯誤刪除或格式化, 使用資料救援軟件還是有機會救回的。最重要是錯誤刪除資料後, 不要再寫入資料到硬碟, 以免新寫入的資料覆蓋誤刪資料, 救回資料的機會及數量都會較多。這裡介紹幾款免費資料救援工具, 紀錄一下以備不時之需。 但一般上資料救援工具對中文檔案及資料夾支援較差, 救回後的資料檔案及資料夾名稱會不同, 我也試過救回的檔案是英文檔名, 但太長的檔案也被截斷, 所以要留意救回的資料檔案名稱不同的情況。 TestDisk & PhotoRec 雖然 TestDisk 是 DOS 命令模式工具, 但我個人還是十分推薦的, 記得在幾年前我錯誤格式化了數碼相機的 SD 咭, 用過另外兩款救援軟件都不能救回資料, 還怕被當時的女朋友 (現在的老婆) 狠狠罵一頓, 結果 TestDisk …