当我们的公司完成安装时,我正在尝试自动化一些电子邮件,下面是填充变量的代码,但是当我去使用它们时,它不包含任何数据。我做错了什么。
$panelNumber = "";
$physicalAddress = "";
$city = "";
$state = "";
$releaseNumber = "";
$matrix = "";
$dateOfInstall = "";
$serverIP = "";
$webcamIP = "";
$webcamPort = "";
$useLan = 0;
$WANIP = "";
$from= 'NIW@yesco.com';
$from_name=' Yesco Electronics Network Operations Center';
$market_id ="";
$Cname="";
$Cemail= "";
$existingQueryResult = mysql_query("SELECT *
FROM assets_new
WHERE asset='" . $assetName . "'");
$num_results = mysql_num_rows($existingQueryResult);
if ($num_results > 0)
{
while($row = mysql_fetch_array($existingQueryResult))
{
$panelNumber = $row['panel'];
$physicalAddress = $row['location'];
$city = $row['city'];
$state = $row['state'];
$releaseNumber = $row['release_num'];
$matrix = $row['matrix'];
$dateOfInstall = $row['install_dt'];
$serverIP = $row['lansideip'];
$webcamIP = $row['webcamip'];
$webcamPort = $row['webcamport'];
$useLan = $row['uselan'];
$WANIP = $row['ipaddress'];
$market_id= $row['market_id'];
}
}
$CnameQueryResult = mysql_query("SELECT c.name, m.email
FROM markets m, customers c
WHERE m.customer_id = c.id
AND m.id ='".$market_id."'");
$num_results = mysql_num_rows($CnameQueryResult);
if ($num_results > 0)
{
while ($row = mysql_fetch_array($CnameQueryResult))
{
$Cname= $row['name'];
$Cemail= $row['email'];
}
}
答案 0 :(得分:1)
如果没有办法逐步执行代码,PHP的处理可能很痛苦。我的建议是在测试过程中回应一下,这样你就可以跟进进展。
例如,在查询中添加die
,以便查看失败:
$existingQueryResult = mysql_query("<query>") or die('Error: ' . mysql_error());
如果没有失败,是否有任何结果?
$num_results = mysql_num_rows($existingQueryResult);
echo 'Results: ' . $num_results;
如果确实如此,循环是否获得了您期望的数据? (并且如同@ Different55所允许的那样,如果您只期望一个结果,则不需要循环。)
$row = mysql_fetch_array($existingQueryResult);
$panelNumber = $row['panel'];
...
echo 'Panel: ' . $panelNumber;
同时检查mysql_fetch_assoc
因为我相信mysql_fetch_array
只返回一个带有数字索引的数组,而mysql_fetch_assoc
会获得一个带有命名索引的数组。我想$row['panel']
将不包含任何数据,除非您使用关联数组。
最后,制作一个调试器函数很有帮助,您可以在调试后轻松找到并删除它。回应变量是有帮助的,但是如果你解决问题并且不小心将其中的一个放入,你就会收到一些“奇怪”的东西供用户查看。
我有一个名为pr
的调试器函数,它只是以固定宽度样式回显变量,因此很容易看到数组内容。调试后删除就像搜索pr(
一样简单。
function pr($ar, $vn='undefined')
{
echo '<span style="font-family: Lucida Console; font-size: 8pt; white-space: pre; display: block; color: #66F;">';
echo strtoupper($vn) . ':';
if(gettype($ar) != 'array') echo ucfirst(gettype($ar)) . ' ';
print_r($ar);
echo '</span>';
}
您可以这样使用它:
pr($panelNumber, 'panelnumber');
// PANELNUMBER:String asdf
祝你好运!
答案 1 :(得分:0)
经过几个月的撞击我的头撞墙后,我发现了它。为了完成我们称之为安装的操作,调用了以下函数。 write_to_pdf() 2. delete_info() 3. send_email()
如您所见,我在发送电子邮件之前从表中删除了信息。所以电子邮件功能正常。他们正按照我的要求发送。感谢大家的帮助和贡献。