Latest News

Home » PHP與MySQL教學 » 【升級 PHP7】網站訂購單系統PHP 5.6升級到PHP7 MySQL資料庫無法讀取(原因與解決的方法)

【升級 PHP7】網站訂購單系統PHP 5.6升級到PHP7 MySQL資料庫無法讀取(原因與解決的方法)

網站訂購單系統PHP 5.6升級到PHP7 MySQL資料庫無法讀取!
PHP 5.6之前的資料庫連線檔案 Connections.php 是這樣:
<?php
# FileName=”Connection_php_mysql.htm”
# Type=”MYSQL”
# HTTP=”true”
$hostname_linkmysql = “localhost”;
$database_linkmysql = “ordersdata”;
$username_linkmysql = “root”;
$password_linkmysql = “AG09102556817Gb”;
$linkmysql = mysql_pconnect($hostname_linkmysql, $username_linkmysql, $password_linkmysql) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query(“SET NAMES UTF8”);
?>
升級到 PHP7 之後,開啟訂購單頁面是:一片空白!
那原因是什麼呢?
相信很多人要升級 PHP7 的第一步就可能遇到:訂購單頁無法開啟….

當然這樣網站開啟訂購單頁面試:一片空白!
那網購生意也沒辦法作了,只好乖乖換回原來的 PHP 5.6版本


死了這條心嗎?為何會如此?
你問當初跟你設計的程式設計師就會知道……
(原來是:PHP 5.6升級PHP7後,之前MySQL的原來語法不能用了!)

原因是:PHP>=5.5 時所有以 mysql_開頭的函數都會作廢 deprecated,改用以 mysqli_開頭的函數取代
所以,你目前使用的網站訂購系統如果從PHP 5.6升級PHP7後,正個系統因為如法連結MySQL資料庫(所以是:一片空白!)
PHP 7 的MySQL資料庫連線應該是這樣的:
1.先要建立資料庫連線:
$DBNAME = “db”;
$DBUSER = “user”;
$DBPASSWD = “password”;
$DBHOST = “localhost”;
$conn = mysqli_connect( $DBHOST, $DBUSER, $DBPASSWD);
if (empty($conn)){
print mysqli_error($conn);
die (“無法連結資料庫”);
exit;
}
備註:第7行 如果$conn=false代表連結不成功
PHP>=5.5 時所有以 mysql_開頭的函數都會作廢 deprecated,改用以 mysqli_開頭的函數取代!
2. 選取資料庫
選擇資料庫使用函數 mysqli_select_db();
if( !mysqli_select_db($conn, $DBNAME)) {
die (“無法選擇資料庫”);
}
// 設定連線編碼
mysqli_query( $conn, “SET NAMES ‘utf8′”);
3.這樣就可以取得資料:
$sql =”select * from `table` where id=1234″;
$result = mysqli_query($conn, $sql);
備註:第2行 mysql_query 的回傳值$result有兩種狀況:
SELECT, SHOW, DESCRIBE, EXPLAIN 等如果成功則取回 resultset ,否則為 false
INSERT, UPDATE, DELETE, DROP 等成功則傳回 true,否則為 false
4.接著是取出資料:
取回行數
$num = mysqli_num_rows($conn, $result);
取回資料
使用mysqli_fetch_array取回資料, 有下列三種常數狀態:
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
print_r( $row);
}
/*
Array
(
[0] => A123456789
[1] => 1234
[2] => 陳麗如
)
*/
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
print_r( $row);
}
/*
Array
(
[id] => A123456789
[pass] => 1234
[name] => 陳麗如
)
*/
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
print_r( $row);
}
/*
Array
(
[0] => A123456789
[id] => A123456789
[1] => 1234
[pass] => 1234
[2] => 陳麗如
[name] => 陳麗如
)
*/
常數 MYSQLI_NUM:0 MYSQLI_ASSOC:1 MYSQLI_BOTH:2
取回物件形態資料
while($obj = mysqli_fetch_object($result)){
print ($obj->id);
}
取回最後一筆異動的索引
$last_id=mysqli_insert_id($conn);
要注意的情況:
– 一定要有一個欄位有 auto_increment 屬性,否則回傳0
– 一定之前要有insert或update操作,否則回傳0

5.最後是關閉連線:
雖然PHP, mysql 會自動關閉逾時的連線和記憶體,但也能手動操作
釋放記憶體
mysqli_free_result ( $result )
關閉連線
mysqli_close($conn);

洪總教頭最後結論:
PHP 5.6 升級到 PHP7 是遲早得事情,以執行效率與安全性等諸多理由
(你的網站也不能遲遲在 PHP 5.6等待被淘汰!)

動態網站與購物網站系統使用 PHP + MySQL 大家已經用那麼久了,早就習慣了!
如果你的網站是使用架站程式,那就要注意:PHP 版本是支援那一個版本?
購物車(購物網站架站程式)也一樣,也是要注意:PHP 版本是支援那一個版本?
如果你的程式是花錢請PHP程式設計師或設計公司設計的,那也要回去找他們,看看是否可以升級?

如果你自己會PHP+MySQL的程式設計,那當然就能省去非常多的麻煩!
總教頭的PHP程式設計+MySQL資料庫+Dreamweaver整合教學
(PHPMaker運用設計網站教學):
http://por.tw/php/new-E_learning/index.php
或許是你最好的選擇!自己會,就不需要樣樣事情都要花大錢請人家幫你設計
日後維護也比較能自己掌握!那網路事業的經營也比較順心!

About

發佈留言