我正在尝试根据某些输入生成SQL。我有一个预定义的SQL(在其中我做了一些替换),它将使用这些输入来使用ODBC连接生成所需的SQL
我现在已将预定义的SQL存储在JS文件中。
以下是相同的代码:
function get_Result($query_passed){
//echo "inPHP";
$conn=odbc_connect(connectiondetails) or die(odbc_errormsg());
$resultset = odbc_exec($conn, $query_passed);
$rowValues = [];
while(odbc_fetch_array($resultset)){
$rowValue = odbc_result($resultset,1);
array_push($rowValues,$rowValue);
}
echo $rowValues[1].$rowValues[2]; // for debugging purpose
odbc_close($conn); // closing the connection
}
假设输入是column1,column3 必须生成的必需SQL是:
Select column1,sum(l1+week*column3)+ ........sum(l175+week*column3) from tempTable
我的JS代码如下:
$.ajax({
url: "logic/GetResultSet.php",
type: "post",
data:"query_To_Fire="+finQuery+"&action=get_Result",
success: function(data){
$("#finaleQuery").append("<b>Generated Query:</b>"+data);}
在调试JS时我得到输出为
select column1,sum(l1+week*column3)+...+sum(l76+week*column3)+LCLT_F3)1)����ȏ���ȏ 11 and so on
这些奇怪的字符后面还会包含一些文字,其中包含各种详细信息,例如我的ajax调用参数,我的密码等。
如果我的输入为column1,column2为cos,则不会对第2列进行任何求和这一直困扰着我。对这种行为有任何想法。
注意:我正在使用sublime文本,所以没有调试实际PHP代码的选项。
答案 0 :(得分:0)
我终于得到了这个问题。
PHP的默认设置为&#34; 4096&#34;处理LONG字段的字节数。如上所述here
覆盖设置对我有用:ini_set("odbc.defaultlrl", "10K");
php.ini
以支持项目特定设置:
odbc.defaultlrl=4096 //default in php.ini
实用说明:
; Handling of LONG fields. Returns number of bytes to variables. 0 means
; passthru.
odbc.defaultlrl=0 //to get as many characters as the long text contains.