推 GALINE: 一個可能的作法是,執行 "EXPLAIN {$sql}",看會不會噴錯 01/26 09:57
→ GALINE: 然後直接讓使用者對 DB 下 SQL ,在某些公司會被砍頭的... 01/26 09:58
→ GALINE: 想一下如果有人下「DROP employees」會怎樣[汗] 01/26 09:59
推 rockmanalpha: 不太懂你的意思 你是怕表格傳過來的SQL太危險? 01/26 09:59
→ GALINE: 之前看過的作法是,把需要做報表的資料 dump 到獨立的 DB 01/26 09:59
→ rockmanalpha: 如果是這樣 你可以在MYSQL開一個用戶 對某個DB只有 01/26 09:59
→ GALINE: 然後那個 DB 讓使用者亂玩,而且這樣也可以控制敏感資料 01/26 10:00
→ rockmanalpha: SELECT的權限 然後那個PHP連接MYSQL時就用這個用戶 01/26 10:00
→ GALINE: 不要讓 user 取得 01/26 10:00
→ rockmanalpha: 至於結果是否錯誤 那是可以從return得知 01/26 10:00
→ GALINE: 用帳戶控制也是一種作法...不過 user 下的 SQL 不會太好看 01/26 10:01
→ GALINE: 如果卡 DB 就麻煩了 01/26 10:01
→ rockmanalpha: G大不好意思 插樓了 01/26 10:02
→ GALINE: 之前看過更花俏的搞法是,Excel 連 MS SQL Server 01/26 10:02
→ GALINE: 然後就可以用 VB 下 SQL 然後搞些樞紐分析表什麼的... 01/26 10:02
推 LaPass: 我問一下,誰可以輸入sql? 這聽起來很危險.... 01/26 11:07
→ carylorrk: 內部工具可以輸入 SQL 很正常啦...重點是控管好權限。 01/26 18:41
→ carylorrk: 像是 ERP 裏自定表格或是 phpmyadmin 這類的都有啊 01/26 18:42
→ carylorrk: 語法上的正確性可以用 parser,能否正確執行就上面所述 01/26 18:49
→ carylorrk: 如果是安全性考量就根本不該讓人直接執行 SQL。 01/26 18:50
→ TobyH4cker: 原PO想問的是執行之後有沒有錯誤的話,query完return 01/26 19:18
→ TobyH4cker: 如果是false就是失敗了 01/26 19:19
→ TobyH4cker: 然後你只要handle這個錯誤然後回報有錯誤就可以了 01/26 19:20
→ TobyH4cker: 小弟是新手,以上方法可能不是嚴謹做法 01/26 19:21
推 GALINE: phpmyadmin是方便管機器的人,不是方便使用者的 XD 01/26 23:33
→ GALINE: ERP 的例子有看過,不過個人覺得那不是什麼好習慣.. 01/26 23:34
→ GALINE: 不過考慮到需求單位可以直接處理資料,有時候還是要開門.. 01/26 23:35
→ GALINE: 只是開門之後怎麼樣不會出大包就是另一個問題。例如今天 01/26 23:36
→ GALINE: 有人對某個MyISAM的大TABLE下沒有index的查詢,馬上有感 01/26 23:38
→ xdraculax: 能輸入SQL的都是有權限的工程師吧,是否正確他們自己 01/27 03:16
→ xdraculax: 負責就好啦,執行有出錯的話就直接把錯誤秀在UI上 01/27 03:17