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