while循环PHP中的未定义变量错误-访问[关闭]

Posted

技术标签:

【中文标题】while循环PHP中的未定义变量错误-访问[关闭]【英文标题】:undefined variable error in while loop PHP - ACCESS [closed] 【发布时间】:2014-07-30 07:12:57 【问题描述】:

我正在从 php 页面中的几个查询中获取数据。所有的循环和查询都运行良好,但我在下面的一个中遇到了错误。

错误一:

$sql_pso_sign="SELECT * FROM Table";
$rs_pso_sign=odbc_exec($conn,$sql_pso_sign);
if (!$rs_pso_sign) 
  exit("Error in SIGNATURE TABLE INFO SQL");

 while (odbc_fetch_row($rs_pso_sign)) 

      $psoName = odbc_result($rs_pso_sign, "NAME");
      $psoSign = odbc_result($rs_pso_sign, "SIGNATURE");
      $psoDate = odbc_result($rs_pso_sign, "DATE");

  

  echo $psoName;

错误是未定义的变量:pso_name;

我已经从同一页面复制了其他运行良好的循环。同一页面上的工作是

$sql_items="SELECT * FROM Table2";
$rs_items=odbc_exec($conn,$sql_items);
if (!$rs_items) 
  exit("Error in table2 SQL");

 while (odbc_fetch_row($rs_items)) 

    $calc = odbc_result($rs_items, "ITEMS_CALC");
    $dsd = odbc_result($rs_items, "ITEMS_DSD");
    $wrs = odbc_result($rs_items, "ITEMS_WRS");
    $specs = odbc_result($rs_items, "ITEMS_SPECS");
    $ochk = odbc_result($rs_items, "ITEMS_OTHERS");
    $otxt = odbc_result($rs_items, "ITEMS_OTHERS_TXT");


echo $calc;

我已经从其他人那里删除并粘贴了相同的 while 循环,并且我已经在第一个查询的 while 循环中放置了不回显的回显检查,这让我感到非常沮丧。

有什么建议吗?

实际代码:

$sql_pso_sign="SELECT * FROM SIGNATURES_DASO WHERE DASO_NO ='".$daso_no."'";
$rs_pso_sign=odbc_exec($conn,$sql_pso_sign);
if (!$rs_pso_sign) 
  exit("Error in SIGNATURE TABLE INFO SQL");

 while (odbc_fetch_row($rs_pso_sign)) 

      $psoName = odbc_result($rs_pso_sign, "NAME");
      $psoSign = odbc_result($rs_pso_sign, "SIGNATURE");
      $psoDate = odbc_result($rs_pso_sign, "DATE");

  

 echo $psoName;

$daso_no 中有值,我检查了查询是否正确

【问题讨论】:

先修复语法错误。 markdown 荧光笔已经显示了它(或者可能只是一个错字) 其次,变量名为 $psoName 而不是 $pso_name;,这就是您看到的错误 这里只是一个错字,它的 $psoName 在 echo 中。 我正在使用dreamweaver,它说没有语法错误。 【参考方案1】:

检查查询是否返回一行:

$sql_pso_sign="SELECT * FROM SIGNATURES_DASO WHERE DASO_NO ='".$daso_no."'";
$rs_pso_sign=odbc_exec($conn,$sql_pso_sign);
if (!$rs_pso_sign) 
  exit("Error in SIGNATURE TABLE INFO SQL");

if (odbc_fetch_row($rs_pso_sign)) 

    $psoName = odbc_result($rs_pso_sign, "NAME");
    $psoSign = odbc_result($rs_pso_sign, "SIGNATURE");
    $psoDate = odbc_result($rs_pso_sign, "DATE");

    echo $psoName;
 else 
    echo "$daso_no not found.";

请注意,如果查询只应返回一行,则无需使用 while 循环。

【讨论】:

现在完美运行。谢谢你。一个问题。如果我们想要一条记录 while 循环不是最好的方法? 对。 while 循环用于重复处理所有记录。如果只有一条记录,则没有必要。【参考方案2】:

你的变量命名错误

$pso_name;

改成

$psoName;

【讨论】:

缺少引号一定是复制错误,否则脚本甚至不会运行。 是的,你说得对 :) 我编辑了他的帖子和我的帖子 您在说哪些缺少的引号? @barmar? @Alz 当你发布这个问题时,你写了$sql_pso_sign="SELECT * FROM Table;——那里没有结束引号。 为什么不粘贴实际代码和错误消息,而不是重新输入。那么您就不能打错字了,我们可以帮助您解决问题。

以上是关于while循环PHP中的未定义变量错误-访问[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP包含文件中的未定义变量错误[重复]

带有循环包含的脚本中的未定义变量(第一个脚本包含另一个包含第一个的)

视图页面laravel中的未定义变量[关闭]

C ++ / Eclipse中的未定义符号错误[关闭]

重定向后刀片中的未定义变量

mysqli_query 上的未定义变量