字符串中的星号会导致文件列表?

时间:2013-12-03 20:56:52

标签: php

哦,我的好主。我正在尝试更新前一个程序员留下的一些编码。我遇到的问题是,当我尝试编写SQL语句时,星号会被文件列表替换。

他之前的人喜欢运行像shell脚本这样的PHP脚本。 (如果你只有锤子......)所以,这是从命令行运行的。

// Here's Jason's additions. We add split comissions to the splits table and merge them with the records coming out of GP.
$jemsql = "select * from splits where salesPerson = '$salesCode'";
print "JemSQL: ".$jemsql."\n\n";
$sp_data = $mysql->query($jemsql);
$headData = array_merge($headData, $sp_data);

基本PHP,对吗?好吧,我一直收到SQL错误,日志显示......

select MJS_new.report.php OLE Spreadsheet Spreadsheet_Excel_Writer-0.9.2.tgz (long file listing...) 
from exception where salesPerson = 'JD'

我回去运行原始脚本,问题是OEM。他在同一个地方遇到同样的问题。

在这里帮帮我,为什么星号会返回文件列表?如何覆盖星号?有什么办法可以阻止这种行为吗?如果需要更多代码,但我很难过。这怎么会发生?

编辑: 我已经最小化了文件,只保留了绝对需要的内容:

#!/usr/local/bin/php
<?
date_default_timezone_set("America/New_York");
$db_host = 'datasrv';
$db_user = 'XXXX';
$db_pass = 'XXXX';
$db_name = 'financials';
mysql_connect($GLOBALS["db_host"], $GLOBALS["db_user"], $GLOBALS["db_pass"]) or die('Could not connect: ' . mysql_error());
mysql_select_db($GLOBALS["db_name"]) or die('Could not select database'.$db);
// Here's Jason's additions. We add split comissions to the splits table and merge them with teh records coming out of GP.
$jemsql = "select * from splits where salesPerson = '".$salesCode."'";
print "JemSQL: ".$jemsql."\n\n";
$sp_data = mysql_query($jemsql)
?>

当我使用通常用于启动它的shell脚本运行时,这是输出:

JemSQL: select MJS_new.report.php OLE Spreadsheet Spreadsheet_Excel_Writer-0.9.2.tgz (long file listing) from splits where salesPerson = ''

如果我只是从命令行运行它:

/usr/local/bin/php ./min_report.php JD test.pdf
JemSQL: select * from splits where salesPerson = ''

以下是调用它的shell脚本:

for salesPerson in ${sales[*]}; do
    fileTarget="$mountTarget$salesPerson/$fileName";
    dirTarget="$mountTarget$salesPerson/";
    out=`/usr/local/bin/php ./min_report.php $salesPerson $fileTarget`
    echo $out;
    out=`cp reports/$salesPerson.xls $dirTarget`;
    echo $out;
    echo $salesPerson;
    cnt=`expr $cnt + 1`
done

所以,至少我已经解决了这个问题......而且我很想知道他为什么选择在bash shell中运行命令的“echo”方法。

0 个答案:

没有答案