iT邦幫忙

3

php跟Mysql 為什麼這麼緊密?

  • 分享至 

  • xImage

想問一個被廣泛使用,但是卻不知道為什麼的問題?
MSSQL+C# 很顯而易見,就是因為是微軟維護並開發使用的。

但是為什麼 php跟 Mysql 會這麼緊密?
明明也可以用postgresql 但是Mysql 感覺還是壓倒性的勝出與Php做搭配。
是什麼原因呢?
想請教各位大大~~

看更多先前的討論...收起先前的討論...
因為XAMPP嗎?
小魚 iT邦大師 1 級 ‧ 2019-10-29 10:25:42 檢舉
應該是先有PHP + MySql,
才有LAMP跟Xampp.

--
先有雞還是先有蛋?
froce iT邦大師 1 級 ‧ 2019-10-29 10:53:57 檢舉
因為歷史...
MySQL的歷史比較悠久,成名比較早。
James iT邦大師 6 級 ‧ 2019-10-29 12:03:11 檢舉
就是名字取得好壞的差別,商用資料庫就不比了,同樣可以免費使用的PostgreSQL難唸也難拼,不管是寫程式的還是寫書的當然選易拼不容易錯的。
ccutmis iT邦高手 2 級 ‧ 2019-10-29 12:17:51 檢舉
it跟老闆簡報 資料庫...
 1.麥洗褲(mysql)
 2. 破絲格咧洗褲(PostgreSQL)

老闆: ...
froce iT邦大師 1 級 ‧ 2019-10-29 14:27:14 檢舉
我是老闆我才不管你啥洗褲咧,免成本賣得出去就好。XD
還在當學生時,開始用PHP4+PostgreSQL(7.2版)時,當時所有教學書都是PHP+MySQL,台中找不到書,還特地跑了一趟台北的天隴書局,才找到一本PostgreSQL的書,印象很深
因爲.....愛?
sean666 iT邦新手 5 級 ‧ 2019-10-30 20:32:37 檢舉
有愛來朝聖,因為wordpress預設也是php跟Mysql
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
7
阿展展展
iT邦好手 1 級 ‧ 2019-10-29 09:39:39
最佳解答

https://ithelp.ithome.com.tw/upload/images/20191029/20119546VCCKUzpXW8.jpg

市占率 歷史 開發商 學習曲線 費用

上圖為
資料庫排名(Apr 2018) 原文網址:https://itw01.com/GYVBKEA.html

看更多先前的回應...收起先前的回應...
小魚 iT邦大師 1 級 ‧ 2019-10-29 10:23:51 檢舉

Oracle太貴了,
MS-SQL也有點貴,
PHP + MySql/MariaDB 在全世界的市占率應該還是最高.

補上成本 感謝魚哥

感謝補充 \0.0/

感謝各位大大回應

3
dragonH
iT邦超人 5 級 ‧ 2019-10-29 09:39:59

可能是因為 xampp 預設的就是 mysql + php 吧

也有可能是蠻多人聽過 mysql 卻沒聽過 postgresql

也有可能是 LAMP 很常被解讀成

linux + apache + mysql + php

去問學校的學生他們用過的 database 有哪些

基本上 mysql 都會在其中

3
小魚
iT邦大師 1 級 ‧ 2019-10-29 09:48:08

C#是針對MS-SQL開發的,
同樣的PHP原本預設就是使用MySql,
如果要問爲什麼,
你應該要去問開發者.

看更多先前的回應...收起先前的回應...
dragonH iT邦超人 5 級 ‧ 2019-10-29 09:52:50 檢舉

同樣的PHP原本預設就是使用MySql,
如果要問爲什麼,
你應該要去問開發者.

開發者:
我沒有這樣說阿
我寫 php 時 mysql 都不知道在哪裡呢XD /images/emoticon/emoticon37.gif

小魚 iT邦大師 1 級 ‧ 2019-10-29 10:21:42 檢舉

dragonH
PHP一開始就是針對MySql設計的,
剛開始的連線也是針對MySql,
所以才會有phpMyAdmin跟mysqli類別等等的,
後來才改成適用於許多資料庫系統.
一般PHP的書籍資料庫的部分也都是針對MySql來寫.

hsiang11 iT邦好手 1 級 ‧ 2019-10-29 10:28:07 檢舉

我認為mysql當初會走紅跟免費也有一些關係
另外就是程式跟資料庫的連線驅動
才是導致開發人員選擇資料庫的依據

到底是先有雞還是先有蛋

喔喔~~
原來還有這樣的歷史
我以為php跟mysql原本都是獨立的

dragonH iT邦超人 5 級 ‧ 2019-10-29 10:43:48 檢舉

小魚

PHP一開始就是針對MySql設計的,
剛開始的連線也是針對MySql,

這樣的說法有依據可以參考嗎

不然我覺得又跟之前討論的

php 有 dictionary一樣

是個美麗的誤會 /images/emoticon/emoticon07.gif

小魚 iT邦大師 1 級 ‧ 2019-10-29 10:47:54 檢舉

如果要正式上線的話,

PHP + MySql = 便宜,
C# + MS-SQL = 有點貴,
?? + Oracle = 貴^n

而且PHP跟 MySql => MariaDB 是開源的,
(MySql被Oracle買走之後很多人就改用MariaDB了,
因為開發者是同樣一群人,
所以是完全相容的)
因為成本低,
所以很多人用.

小魚 iT邦大師 1 級 ‧ 2019-10-29 10:50:19 檢舉

dragonH
PHP 真的有 dictionary 啊,
不過PHP的dictionary跟陣列在PHP上的用法是差不多的.
但是傳Json的時候就會有差.

至於依據的話,
還是問原作者吧.
不過早期的PHP連資料庫的確是針對MySql設計的.
至於是不是一開始就這樣,
我也不是一開始就接觸的,
還是要問原作者比較準.

ccutmis iT邦高手 2 級 ‧ 2019-10-29 11:18:19 檢舉

剛開始的連線也是針對MySql

這個說法我個人認為是正確的。

微軟早期自恃是作業系統界的霸主,
他們家的asp是不給連mysql的
(可以用ODBC連但是那個問題很多,就當作是不給連吧),
asp比起php算是門檻超低的網頁應用程式,
但是只跟微軟自家的資料庫配合度較好(mssql或access),
asp另一個失敗的地方就是很多功能是要靠第三方插件提供
(例如上傳圖片縮放這種最基本的功能,很抱歉M$的asp內建沒有,
要花錢買什麼aspJpg之類的,php很佛心提供各種不用錢的給你用),
最後asp失敗才催生了.net...
php+mysql能有高市佔率應該是在那時候奠下的基礎。

自從mysql商業化之後,應該是大都轉mariadb了(xampp目前的stable版灌的也是mariadb,但控制介面寫mysql,估計一堆xampp新人都不知道自己用的DB是mysql還是mariadb)。樓主貼的統計表有個誤區就是它的mysql市佔率是2008前還是後產生的這個沒辦法識別,

一個億萬富翁是繼承萬貫家財還是白手起家,差很多的...。

dragonH iT邦超人 5 級 ‧ 2019-10-29 11:23:17 檢舉

PHP 真的有 dictionary 啊,
不過PHP的dictionary跟陣列在PHP上的用法是差不多的.

這個應該是因為 php 的 array 功能太廣

有類似 C# dictionary 的功能

所以才會覺得 php 也有 dictionary 吧

不然應該很少人會直接認為 php 有 dictionary

根據這篇

No, there are no dictionaries in php. The closest thing you have is an array. However, an array is different than a dictionary in that arrays have both an index and a key. Dictionaries only have keys and no index

PHP一開始就是針對MySql設計的

至於這個

我實在找不到 php 5 之前的 database 情況

應該是當時的時空背景下

促成了 php + mysql 的組合

畢竟他們推出時間也很接近

不過我比較想要知道

在早期的 php 是不是只有 mysql 這選項

不過好像不太好找 XD /images/emoticon/emoticon06.gif

ccutmis iT邦高手 2 級 ‧ 2019-10-29 11:29:49 檢舉

在早期的 php 是不是只有 mysql 這選項

我認為 不是php 只有 mysql 的選項
(php 連 oracle 連 postgresql 都沒問題 但是要花$)

而是它的主要競爭對手只有特定的選項
(而且還是要花$)

php+mysql 功能完整又不用花$ 自然變成中小型網站架站首選...

dragonH iT邦超人 5 級 ‧ 2019-10-29 11:33:45 檢舉

我認為 不是php 只有 mysql 的選項
(php 連 oracle 連 postgresql 都沒問題 但是要花$)

也就說早期 php 其實有多種 database 的選項

只是 mysql 便宜(免費)又好用

最後也就導致他們愈走愈近的意思嗎XD

ccutmis iT邦高手 2 級 ‧ 2019-10-29 11:45:11 檢舉

我覺得應該是耶 小氣的boss太多了 XD

dragonH iT邦超人 5 級 ‧ 2019-10-29 11:53:49 檢舉

我覺得應該是耶 小氣的boss太多了 XD

/images/emoticon/emoticon37.gif

froce iT邦大師 1 級 ‧ 2019-10-29 11:59:49 檢舉

應該跟MySQL剛好在postgresql還在空窗期的時候流行起來有關係吧。
而且postgresql到8.0(2005)才有windows版,我想這點也有關。

小魚 iT邦大師 1 級 ‧ 2019-10-29 12:01:59 檢舉

ccutmis
不只是BOSS,
只要出錢的都很小氣,
包括我.
/images/emoticon/emoticon39.gif

fongyi iT邦新手 5 級 ‧ 2019-10-30 04:04:36 檢舉

dragonH

根據這篇

No, there are no dictionaries in php. The closest thing you have is an array. However, an array is different than a dictionary in that arrays have both an index and a key. Dictionaries only have keys and no index

岔題問個,我記得JS的字典也可以有索引呀?
為什麼有索引就不能是字典呢?

小魚 iT邦大師 1 級 ‧ 2019-10-30 07:15:52 檢舉

其實C#的陣列是沒有索引的(只有數字),
字典才有索引(可以帶任意類型),
字典直接帶索引比陣列去搜尋更快速.

dragonH iT邦超人 5 級 ‧ 2019-10-30 09:40:31 檢舉

fongyi

岔題問個,我記得JS的字典也可以有索引呀?

我記得 js 也沒有一個直接叫 dictionary 的物件

可以給個範例嗎

還是你指的是 js 的 object

dictionary 的定義參考

小魚

其實C#的陣列是沒有索引的(只有數字)

不是很懂這部分的意思

可以舉個範例參考嗎XD /images/emoticon/emoticon32.gif

ideone

沒有的話

怎麼會有 Array.IndexOf 可以用

c# 好複雜/images/emoticon/emoticon17.gif

挖屋 大家的回應也太踴躍了吧~
哈哈哈哈
感謝各位大大分享

小魚 iT邦大師 1 級 ‧ 2019-10-30 19:16:22 檢舉

dragonH
應該說C#陣列就是從0開始,
如果Size = 100,
那就是0~99,
你說的那個函式是去找到他的index,
但是基本上意思跟你用迴圈從0開始跑意思差不多,
也許他有特別的演算法但我想不出來,
這部份你有時間去找微軟的文件也許找的到.

至於C#的Dictionary,
基本上就是 Key => Value,
所以只有foreach不能用for,
因為沒有index,
而且Key可以使用任何類別,
你可以用最常用的直接當作Key,
瞬間就可以找到你要的.

意思是我要找一個string相關的資料,
Array 要從0開始找,
Dictionary只要把string當作Key,
瞬間就可以找到.

dragonH iT邦超人 5 級 ‧ 2019-10-30 20:12:21 檢舉

應該說C#陣列就是從0開始,
如果Size = 100,
那就是0~99,
你說的那個函式是去找到他的index,
但是基本上意思跟你用迴圈從0開始跑意思差不多,
也許他有特別的演算法但我想不出來,
這部份你有時間去找微軟的文件也許找的到...

這些應該每個程式語言語言的 array 都是這樣

我只是好奇 array 沒有 index

怎麼還會是 array XD

感謝小魚 大的解說 /images/emoticon/emoticon41.gif

小魚 iT邦大師 1 級 ‧ 2019-10-30 20:27:52 檢舉

我說的索引是Key,
不是index.

dragonH iT邦超人 5 級 ‧ 2019-10-31 09:37:19 檢舉

我說的索引是Key,
不是index.

呃.. index 就是索引的英文呀

一般說索引應該不會指的是 key

這兩個應該差蠻多的 /images/emoticon/emoticon14.gif

fongyi iT邦新手 5 級 ‧ 2019-11-01 18:07:53 檢舉

岔題問個,我記得JS的字典也可以有索引呀?

我記得 js 也沒有一個直接叫 dictionary 的物件

可以給個範例嗎

還是你指的是 js 的 object

dragonH

對我是說 JS 的物件哈哈
我覺得物件跟字典真的蠻像的...

不過我後來回去想了想,陣列跟字典的主要差別應該是陣列是有序容器,而字典則是雜湊容器,所以即便字典可以用整數當 key ,刪掉字典一個數字 key 所參照的內容,並不會像在陣列中那樣,後面的元素向前移動填補空位(我是指 python)

結果我剛剛試了 JS , JS 後面的東西不會補上啊...難道 JS 沒有陣列嗎?XDD

a = [1, 3, 4, 5]   // [ 1, 3, 4, 5 ]
delete a[1]        // true
console.log(a)     // [ 1, <1 empty item>, 4, 5 ]
dragonH iT邦超人 5 級 ‧ 2019-11-01 19:14:36 檢舉

fongyi

我覺得物件跟字典真的蠻像的...

對阿

很多語言都有某些地方很類似XD/images/emoticon/emoticon07.gif

結果我剛剛試了 JS , JS 後面的東西不會補上啊...難道 JS 沒有陣列嗎

一般 js 刪除 array 的元素

應該比較常用 splice 啦

a = [1, 3, 4, 5]   // [ 1, 3, 4, 5 ]
a.splice(1,1)   
console.log(a)  // [1, 4, 5]

delete 比較常用在刪除 object 的

let obj = {name: '123', status: '2'};
delete obj.name
console.log(obj) // { status: '2' }

順帶一提

之前某個邦友的發問

讓我發現下面這樣

在 js 也能夠成立

let ithelp = new Array(); // []
ithelp.a = '1';
console.log(ithelp) // [a: '1']
console.log(ithelp.length) // 0

ithelp[0] = 'a'
console.log(ithelp) // ["a", a: "1"]
console.log(ithelp.length)// 1

/images/emoticon/emoticon04.gif

小魚 iT邦大師 1 級 ‧ 2019-11-01 19:20:37 檢舉

恩恩,
js的所有都是object,
會有很多神奇的狀況發生,
其實他不算陣列,
除非你都是用array專用的一些函式處理的.

fongyi iT邦新手 5 級 ‧ 2019-11-04 22:41:28 檢舉

dragonH

我會用 delete 是因為剛好看到 python 中關於對陣列使用 delete 的描述,不過其實好像應該稱作 list ?

dragonH iT邦超人 5 級 ‧ 2019-11-04 23:01:57 檢舉

fongyi

我會用 delete 是因為剛好看到 python 中關於對陣列使用 delete 的描述,不過其實好像應該稱作 list

對 不過這又是另一個故事了XD /images/emoticon/emoticon07.gif

fongyi iT邦新手 5 級 ‧ 2019-11-13 16:12:41 檢舉

dragonH
你要說故事嗎?XD

3

依我老人的經驗來談談好了。

其實一開始php是很單純的web server程式,再早期的版本也是有對應obdc、mysql等模組應用。
早期的php安裝完,都還要調整安裝mysql模組才能使用。

再當時能用的資料庫,就是dbase、mysql跟access、mssql。後面兩者在當時很「囂張」完全不想給php支援。雖然可以用odbc的方式來用。但很麻煩。
再加上再當時的mysql還是免費的。反正linux也沒辦法安裝mssql。所以就習慣性的使用了mysql。

久而久之,隨著phpmyadmin問世。php如果我沒記錯的話,3版還是4版之後的php,就預設啟用mysql了。
這也可能並不是php的關係,而是套件包的關係。年代久遠我也不太記得了。

大約在那個年代來說,php+mysql就已經是多少人認定的預設設置了。畢竟當時能選的不多。
再加上後天因素跟環境影響。這已經是預設的安裝方式了。
也沒有什麼理由就是了。

ccutmis iT邦高手 2 級 ‧ 2019-10-29 12:41:44 檢舉

報告~ 挖到2003年的 AppServ安裝說明 裡面已經有包mysql了
http://www.id.idv.tw/~class/class/cu00803/AppServ.htm

挖屋 真的是年代久遠

0
  1. free
  2. linux base
  3. easyily
2
Darwin Watterson
iT邦好手 1 級 ‧ 2019-10-29 16:43:42

因為

Oracle 要付錢/images/emoticon/emoticon05.gif
Ms. SQL 太傲嬌/images/emoticon/emoticon16.gif

只好挑 『我的』SQL/images/emoticon/emoticon01.gif

小魚 iT邦大師 1 級 ‧ 2019-10-30 07:19:16 檢舉

報告,
正式版的 MS-SQL也是要付錢的.
只是Oracle更貴,
而且價錢似乎是看心情開的.
(其實是他覺得你能賺多少開的)
之前公司曾經去問過,
Oracle太貴所以用MS-SQL.

debr979 iT邦新手 5 級 ‧ 2019-10-31 18:00:29 檢舉

公家機關都是MSSQL + Oracle,顆顆。

我要發表回答

立即登入回答