我們是使用PHP和磚SQL的ODBC驅動程序不能運行一個查詢,用戶日期函數用準備好的語句。示例腳本/碼頭工人設置:
https://github.com/rlorenzo/databricks_php/blob/odbc_prepare_error/test_connection.php
例如,下麵的查詢在Python SQL司機:
選擇計數(1)、companyid company_name名稱、係列,從refactored_db investment_date。view_afd companyid不是在(從refactored_db選擇companyid。view_afd哪裏investment_date <日期(現在()間隔64天))和investment_date日期(現在()間隔64天)和日期(現在())GROUP BY companyid, company_name,係列,investment_date有計數(1)< = ?
但使用PHP和我們得到的ODBC驅動程序錯誤:
警告:odbc_prepare (): SQL錯誤:[辛巴][哈迪](80)語法或語義分析錯誤扔在服務器執行查詢。從服務器錯誤消息:org.apache.hive.service.cli。HiveSQLException:錯誤運行查詢:org.apache.spark.sql.catalyst.parser。拋出ParseException:不匹配輸入”?“期待{”(”、“{”、“應用”、“叫”、“修改”、“克隆”、“收集”、“包含”、“轉換”、“複製”、“COPY_OPTIO, SQL 37000在SQLPrepare / test_connection狀態。php在43行odbc_prepare錯誤(辛巴):【堅強】(80)語法或語義分析錯誤扔在服務器執行查詢。從服務器錯誤消息:org.apache.hive.service.cli。HiveSQLException:錯誤運行查詢:org.apache.spark.sql.catalyst.parser。拋出ParseException:不匹配輸入”?“期待{”(”、“{”、“應用”、“叫”、“修改”、“克隆”、“收集”、“包含”、“轉換”、“複製”、“COPY_OPTIO
這是一個已知的問題嗎?我們想使用預處理語句來防止SQL注入成為可能。然而,我們需要放棄似乎準備好的語句如果司機不完全支持它。
嗨社區,僅供參考。
一份事先準備好的聲明中功能用於執行相同的SQL語句(或相似的)多次與效率高。
準備好的語句基本上是這樣工作的:
直接執行SQL語句相比,預處理語句有三個主要的優點: