想問一個被廣泛使用,但是卻不知道為什麼的問題?
MSSQL+C# 很顯而易見,就是因為是微軟維護並開發使用的。
但是為什麼 php跟 Mysql 會這麼緊密?
明明也可以用postgresql 但是Mysql 感覺還是壓倒性的勝出與Php做搭配。
是什麼原因呢?
想請教各位大大~~
市占率 歷史 開發商 學習曲線 費用
可能是因為 xampp 預設的就是 mysql + php 吧
也有可能是蠻多人聽過 mysql 卻沒聽過 postgresql
也有可能是 LAMP 很常被解讀成
linux + apache + mysql + php
去問學校的學生他們用過的 database 有哪些
基本上 mysql 都會在其中
C#是針對MS-SQL開發的,
同樣的PHP原本預設就是使用MySql,
如果要問爲什麼,
你應該要去問開發者.
同樣的PHP原本預設就是使用MySql,
如果要問爲什麼,
你應該要去問開發者.
開發者:
我沒有這樣說阿
我寫 php 時 mysql 都不知道在哪裡呢XD
dragonH
PHP一開始就是針對MySql設計的,
剛開始的連線也是針對MySql,
所以才會有phpMyAdmin跟mysqli類別等等的,
後來才改成適用於許多資料庫系統.
一般PHP的書籍資料庫的部分也都是針對MySql來寫.
我認為mysql當初會走紅跟免費也有一些關係
另外就是程式跟資料庫的連線驅動
才是導致開發人員選擇資料庫的依據
到底是先有雞還是先有蛋
喔喔~~
原來還有這樣的歷史
我以為php跟mysql原本都是獨立的
如果要正式上線的話,
PHP + MySql = 便宜,
C# + MS-SQL = 有點貴,
?? + Oracle = 貴^n
而且PHP跟 MySql => MariaDB 是開源的,
(MySql被Oracle買走之後很多人就改用MariaDB了,
因為開發者是同樣一群人,
所以是完全相容的)
因為成本低,
所以很多人用.
dragonH
PHP 真的有 dictionary 啊,
不過PHP的dictionary跟陣列在PHP上的用法是差不多的.
但是傳Json的時候就會有差.
至於依據的話,
還是問原作者吧.
不過早期的PHP連資料庫的確是針對MySql設計的.
至於是不是一開始就這樣,
我也不是一開始就接觸的,
還是要問原作者比較準.
剛開始的連線也是針對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前還是後產生的這個沒辦法識別,
一個億萬富翁是繼承萬貫家財還是白手起家,差很多的...。
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
在早期的 php 是不是只有 mysql 這選項
我認為 不是php 只有 mysql 的選項
(php 連 oracle 連 postgresql 都沒問題 但是要花$)
而是它的主要競爭對手只有特定的選項
(而且還是要花$)
php+mysql 功能完整又不用花$ 自然變成中小型網站架站首選...
我認為 不是php 只有 mysql 的選項
(php 連 oracle 連 postgresql 都沒問題 但是要花$)
也就說早期 php 其實有多種 database 的選項
只是 mysql 便宜(免費)又好用
最後也就導致他們愈走愈近的意思嗎XD
我覺得應該是耶 小氣的boss太多了 XD
我覺得應該是耶 小氣的boss太多了 XD
應該跟MySQL剛好在postgresql還在空窗期的時候流行起來有關係吧。
而且postgresql到8.0(2005)才有windows版,我想這點也有關。
ccutmis
不只是BOSS,
只要出錢的都很小氣,
包括我.
根據這篇
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的字典也可以有索引呀?
為什麼有索引就不能是字典呢?
其實C#的陣列是沒有索引的(只有數字),
字典才有索引(可以帶任意類型),
字典直接帶索引比陣列去搜尋更快速.
岔題問個,我記得JS的字典也可以有索引呀?
我記得 js 也沒有一個直接叫 dictionary
的物件
可以給個範例嗎
還是你指的是 js 的 object
其實C#的陣列是沒有索引的(只有數字)
不是很懂這部分的意思
可以舉個範例參考嗎XD
沒有的話
怎麼會有 Array.IndexOf 可以用
c# 好複雜
挖屋 大家的回應也太踴躍了吧~
哈哈哈哈
感謝各位大大分享
dragonH
應該說C#陣列就是從0開始,
如果Size = 100,
那就是0~99,
你說的那個函式是去找到他的index,
但是基本上意思跟你用迴圈從0開始跑意思差不多,
也許他有特別的演算法但我想不出來,
這部份你有時間去找微軟的文件也許找的到.
至於C#的Dictionary,
基本上就是 Key => Value,
所以只有foreach不能用for,
因為沒有index,
而且Key可以使用任何類別,
你可以用最常用的直接當作Key,
瞬間就可以找到你要的.
意思是我要找一個string相關的資料,
Array 要從0開始找,
Dictionary只要把string當作Key,
瞬間就可以找到.
應該說C#陣列就是從0開始,
如果Size = 100,
那就是0~99,
你說的那個函式是去找到他的index,
但是基本上意思跟你用迴圈從0開始跑意思差不多,
也許他有特別的演算法但我想不出來,
這部份你有時間去找微軟的文件也許找的到...
這些應該每個程式語言語言的 array 都是這樣
我只是好奇 array 沒有 index
怎麼還會是 array XD
感謝小魚 大的解說
我說的索引是Key,
不是index.
我說的索引是Key,
不是index.
呃.. index 就是索引的英文呀
一般說索引應該不會指的是 key
這兩個應該差蠻多的
岔題問個,我記得JS的字典也可以有索引呀?
我記得 js 也沒有一個直接叫 dictionary 的物件
可以給個範例嗎
還是你指的是 js 的 object
對我是說 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 ]
我覺得物件跟字典真的蠻像的...
對阿
很多語言都有某些地方很類似XD
結果我剛剛試了 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
恩恩,
js的所有都是object,
會有很多神奇的狀況發生,
其實他不算陣列,
除非你都是用array專用的一些函式處理的.
依我老人的經驗來談談好了。
其實一開始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就已經是多少人認定的預設設置了。畢竟當時能選的不多。
再加上後天因素跟環境影響。這已經是預設的安裝方式了。
也沒有什麼理由就是了。
報告~ 挖到2003年的 AppServ安裝說明 裡面已經有包mysql了
http://www.id.idv.tw/~class/class/cu00803/AppServ.htm
挖屋 真的是年代久遠
因為
Oracle 要付錢
Ms. SQL 太傲嬌
只好挑 『我的』SQL