【发布时间】:2014-04-23 14:01:05
【问题描述】:
我最近将我的网站从共享主机帐户转移到了我提到的 VPS,因为我认为这可能与它有关。无论如何,我正在使用 PHPExcel https://phpexcel.codeplex.com 生成一个 Excel 表,其中包含从 mysql 表中提取的内容。 该脚本在共享主机帐户上运行良好,但现在突然不起作用,而是显示一个错误,指出致命错误:调用非对象上的成员函数 put() 文件和它所引用的行号看起来像下面这样
$user->put($dateProcessed, $amount);
//below is the code for the page
/**
* @author Gary Drocella
* @date 01/10/2014
* Description: Performs data mining and generates a spread sheet from database.
*/
$todaydate = date('Y-m-d');
require_once '/home/***/public_html/reports/User.php';
require_once '/home/****/public_html/reports/SpreadsheetGenerator.php';
$dbh = Connection::getConnection();
mysql_select_db("*****", $dbh);
$resultSet = mysql_query("SELECT sys_userprofiles.uid, sys_userprofiles.f_name,
sys_userprofiles.l_name, sys_userprofiles.acctstatus_id,
sys_userlogins.acct_status
FROM sys_userprofiles, sys_userlogins WHERE
sys_userprofiles.acctstatus_id NOT IN(0, 11, 23, 26, 28,
30) AND sys_userprofiles.uid = sys_userlogins.uid AND
sys_userlogins.acct_status = 'active' AND
sys_userlogins.u_level = 2", $dbh);
$userTable = array();
/* Create a user Table */
while($row =mysql_fetch_row($resultSet)) {
$uid = $row[0];
$fName = $row[1];
$lName = $row[2];
$currUser = new User($uid, $fName, $lName);
$userTable[$uid] = $currUser;
}
/* Populate user (date,amount) maps */
$resultSet = mysql_query("SELECT DISTINCT uid, str_to_date(paymentdate, '%Y-%m-%d') AS date_processed, SUM(amount) AS total
FROM sys_userpayschedule WHERE uid IN (SELECT uid FROM sys_userlogins WHERE acct_status = 'active' AND u_level = 2)
AND str_to_date(paymentdate, '%Y-%m-%d') >= curdate() AND str_to_date(paymentdate, '%Y-%m-%d') <= DATE_ADD(curdate(), interval 6 MONTH)
GROUP BY date_processed, uid ORDER BY date_processed", $dbh);
while($row=mysql_fetch_row($resultSet)) {
$uid = $row[0];
$dateProcessed = $row[1];
$amount = $row[2];
$user = $userTable[$uid];
$user->put($dateProcessed, $amount);
}
$spreadSheetGen = new SpreadsheetGenerator();
$spreadSheetGen->generate($userTable);
再一次,除了将所有文件从共享主机帐户移动到 VPS 之外,我什么也没做。所以我想知道他们是否可能是某种服务器端模块,我可能需要在共享主机帐户上安装它以使其正常工作?我仔细检查了所有文件实际上都已移动并位于正确的位置以匹配共享主机帐户上的内容。如果需要,我可以发布完整的页面代码。
有什么建议吗??
如果我做一个 var_dump($user);从我的第二个查询中,我得到一个输出,其中包含 urserid 和名称,但我想到一行左右 下面是 $user 的 var_dump
object(User)#240 (5) { ["uid":"User":private]=> string(5) "10489" ["firstName":"User":private]=> string(5) "Helen" ["lastName":"User":private]=> string(12) "Throckmorton" ["dateTotalTable":"User":private]=> NULL ["dateTable"]=> array(0) { } } object(User)#258 (5) { ["uid":"User":private]=> string(5) "10516" ["firstName":"User":private]=> string(7) "Russell" ["lastName":"User":private]=> string(8) "Demedina" ["dateTotalTable":"User":private]=> NULL ["dateTable"]=> array(0) { } } object(User)#2269 (5) { ["uid":"User":private]=> string(5) "13201" ["firstName":"User":private]=> string(7) "Orlando" ["lastName":"User":private]=> string(14) "Lewis-Maryland" ["dateTotalTable":"User":private]=> NULL ["dateTable"]=> array(0) { } } object(User)#2270 (5) { ["uid":"User":private]=> string(5) "13203" ["firstName":"User":private]=> string(17) "Latrinda S" ["lastName":"User":private]=> string(5) "Clark" ["dateTotalTable":"User":private]=> NULL ["dateTable"]=> array(0) { } } NULL
【问题讨论】:
-
$user 不是对象......或者这就是你的错误试图告诉你的...... var_Dump($user)
-
@Dieter 说了什么。另外,请提供负责创建$user的代码。
-
PHPExcel 是用于读取/写入 Excel 文件的特定库;但我从这段代码中看不到任何证据表明您实际上正在使用 PHPExcel 库....如果是,那么您正在使用某种包装器。
-
但是 PHPExcel 库中的任何地方都没有
put()方法;并且您在代码中对 put() 的引用与写入电子表格没有任何关系