在过去的 3 个小时里,我一直在用头撞墙。
我前段时间写了一个简短的脚本,用于PHP/MySQL应用程序的日常维护。 问题不在于脚本本身。 我可以通过它的 URL 手动调用这个 PHP 脚本,它执行得很好,并且做了它应该做的事情。 问题是,当某个事件碰巧运行脚本并且它不起作用时,我试图将脚本包含在应用程序中。
我得到致命的不能仅在函数错误中使用字符串偏移量作为数组,并带有以下行:$ingredientID = $prepItems[$i]['成分ID'];
我知道该错误意味着您分配一个字符串,然后尝试将其视为数组,但是$ingredientID尚未在此行之前的函数中的任何位置声明,并且无论如何$prepItems[$i]['成分ID']本身就是一个字符串!我检查了$prepItems正确返回。 当我返回并调用脚本工作的 URL 时,当我尝试从应用程序的另一个脚本中包含它时,它将不起作用。 我不明白...
完整的代码如下。
//UPDATE PRODUCTION NUMBERS
function fixOrders(){
$k = 0;
$date = date('Y-m-d',strtotime('yesterday'));
$qry = "SELECT a.orderID,a.qty,a.date,a.itemID,b.itemName,b.itemType FROM orders a join items b on a.itemID = b.itemID WHERE a.date > '$date' AND a.itemID = '$itemID'";
$res = mysql_query($qry);
$qry = "INSERT INTO prep (orderID,dateProd,qty,itemID,dept) VALUES ";
while ($row = mysql_fetch_array($res))
{
$itemID = $row['itemID'];
$qty = $row['qty'];
$itemType = $row['itemType'];
$date = $row['date'];
$orderID = $row['orderID'];
$prepItems = prepItems($itemID);
if ($prepItems) removePrepItems($orderID);
$cp = count($prepItems);
if ($prepItems)
{
for ($i = 0; $i < $cp; $i++)
{
$ingredientID = $prepItems[$i]['ingredientID'];
$ingredientWeight = $prepItems[$i]['ingredientWeight'];
$ingredientUnit = $prepItems[$i]['ingredientUnit'];
$productionOffset = $prepItems[$i]['productionOffset'];
$qty = ($ingredientWeight * $qty);
if ($ingredientUnit == 'lbs') $qty = ($qty * 16);
$date = date('Y-m-d',strtotime($date.' +'.$productionOffset.' days'));
echo $date.' '.$productionOffset.'<br>';
$qry .= "('$orderID','$date','$qty','$ingredientID','$itemType'),";
}
$k++;
}
}
$qry = substr($qry,0,-1);
mysql_query($qry);
echo $qry;
}
fixOrders($itemID)
问题出在$prepItems
变量/函数上。插入一个var_dump
以查看您实际在看的内容。
...
$cp = count($prepItems);
var_dump($prepItems);
if ($prepItems)
{
...