Php MySQL变量超出范围
当我们公司完成安装时,我正在尝试自动化一些电子邮件,下面是填充变量的代码,但当我使用它们时,它不包含任何数据。我做错了什么Php MySQL变量超出范围,php,mysql,Php,Mysql,当我们公司完成安装时,我正在尝试自动化一些电子邮件,下面是填充变量的代码,但当我使用它们时,它不包含任何数据。我做错了什么 $panelNumber = ""; $physicalAddress = ""; $city = ""; $state = ""; $releaseNumber = ""; $matrix = ""; $dateOfInstall = ""; $serverIP = ""; $webcamIP = "";
$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'];
}
}
如果没有一种单步执行代码的方法,对PHP进行故障排除可能会很痛苦。我的建议是在测试过程中重复一些东西,这样你就可以跟踪进度了 例如,在查询中添加一个
die
,以便查看失败:
$existingQueryResult = mysql_query("<query>") or die('Error: ' . mysql_error());
如果有,循环是否获得了您期望的数据?(正如@Different55所回避的,如果您只期望一个结果,则不需要循环。)
另外请查看mysql\u-fetch\u-assoc
,因为我相信mysql\u-fetch\u-array
只返回一个带有数字索引的数组,而mysql\u-fetch\u-assoc
则返回一个带有命名索引的数组。我认为$row['panel']
将不包含任何数据,除非您使用关联数组
最后,制作一个调试器函数是很有帮助的,您可以在调试后轻松找到并删除它。回显变量是有帮助的,但如果您解决了问题,但不小心将一个变量留在了中,您将得到一些“奇怪”的东西供用户查看
我有一个名为pr
的调试器函数,它只是以固定宽度的样式回显变量,因此很容易看到数组内容。调试后删除与搜索pr(
一样简单
祝你好运!如果没有一步一步地检查代码,对PHP进行故障排除可能会很痛苦。我的建议是在测试过程中重复一些内容,这样你就可以跟踪进度 例如,在查询中添加一个
die
,以便查看失败:
$existingQueryResult = mysql_query("<query>") or die('Error: ' . mysql_error());
如果有,循环是否得到了您期望的数据?(正如@Different55所回避的,如果您只期望一个结果,则不需要循环。)
另外,请查看mysql\u fetch\u assoc
,因为我相信mysql\u fetch\u array
只返回一个带有数字索引的数组,而mysql\u fetch\u assoc
会给您一个带有命名索引的数组。我认为$row['panel']
将不包含任何数据,除非您改用关联数组
最后,制作一个调试器函数是很有帮助的,在调试后您可以很容易地找到并删除它。回显变量是很有帮助的,但是如果您解决了问题,并且意外地将一个变量留在了调试器中,您将得到一些“奇怪”的结果,供用户查看
我有一个名为pr
的调试器函数,它以固定宽度的样式简单地回显变量,因此很容易看到数组内容。调试后的删除与搜索pr(
一样简单
祝你好运!几个月来,我的头撞在墙上,我终于明白了。为了完成我们所说的安装,调用了以下函数。 1.在pdf()中写入 2.删除_info() 3.发送电子邮件()
如你所见,我在发送电子邮件之前删除了表中的信息。因此,电子邮件功能运行良好。它们发送的正是我要求它们发送的内容。感谢所有人的帮助和贡献。在数月的时间里,我终于明白了这一点。要完成我们所谓的安装,请执行以下功能有人打电话给他。 1.在pdf()中写入 2.删除_info() 3.发送电子邮件()
如您所见,在发送电子邮件之前,我从表中删除了信息。因此,电子邮件功能运行良好。它们发送的正是我要求它们发送的内容。感谢大家的帮助和贡献。欢迎使用Stack Overflow!您在查询中没有执行任何错误检查。虽然不一定与您的问题有关,但是lem,您应该这样做-否则,如果查询失败,您的脚本将中断。如何执行此操作在或中概述。我看到$assetName的唯一位置是在您尝试获取变量值时。您在哪里初始化/设置它?我在代码中进一步初始化它。我只发布了带有变量th的代码在上,$assetName不起作用。是否需要while循环?请在不使用循环的情况下尝试。欢迎使用堆栈溢出!您在查询中没有执行任何错误检查。虽然不一定与您的问题有关,但您应该执行此操作-否则,如果查询失败,您的脚本将中断。如何执行此操作,请参阅或在下面的当您尝试获取变量值时,我看到$assetName的位置。您在哪里初始化/设置它?我在代码中进一步初始化它。我只发布了不起作用的变量的代码,$assetName起作用。这是否需要循环?在没有循环的情况下尝试它。明显的缺陷是mysql_fetch_数组c全部。通过阅读
mysql\u fetch\u array
,它可能没有错。从:返回数组的类型取决于result\u type
是如何定义的。通过使用mysql\u BOTH
(默认设置),您将得到一个既有关联索引又有数字索引的数组。我的错。我把它与mysql\u fetch\u row()混淆了明显的缺陷是mysql_fetch_数组调用。通过查看mysql_fetch_数组
,结果可能不是错误。从:返回数组的类型取决于如何定义result_type
。通过使用mysql_两者
(默认值),您将得到一个既有关联索引又有数字索引的数组。我的错。我把它与mysql_fetch_row()混淆了
$row = mysql_fetch_array($existingQueryResult);
$panelNumber = $row['panel'];
...
echo 'Panel: ' . $panelNumber;
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