想問一個被廣泛使用,但是卻不知道為什麼的問題?
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![]()