-1

这是我的代码:

<?php
function doConnect()
{
   $trueServer = "X";
   $trueDb = "X";
   $trueUser = "X";
   $truePassword = "X";
    mysql_connect($trueServer, $trueUser, $truePassword) or trigger_error(mysql_error());
   mysql_select_db($trueDb) or trigger_error(mysql_error());
} 

$currentlang = $_SESSION['lang'];

function my()
{
   global $pnew;
   global $pnewLine;
   global $pnX;
   global $currentlang;
   doConnect();
   $pnew = mysql_query("SELECT * FROM tutorials WHERE cat='ppn' AND lang='".$currentlang."' ORDER BY id DESC");
   while($pnewLine = mysql_fetch_array($pnew))
   {
      $pnX = $line['text'];
   }
   echo $pnX;
}

my();

?>

我正在尝试选择一个表格行并回显它,如果我在没有该my();功能的情况下使用它,它就像一个魅力,而不是它只是不回显。

现在你问我:你为什么不删除这些函数而改用纯 PHP 呢?A:我正在使用该include功能(我不知道它的真实名称),它工作得很好。

顺便说一句,该doConnect();功能运行良好。到目前为止,我已经尝试过使用全局变量,但它仍然无法正常工作。感谢您的关注!

4

4 回答 4

3

请检查您的功能。在这里,您不是从 while 循环数组中检索数据

函数我的()
{
   全球 $pnew;
   全局 $pnewLine;
   全球 $pnX;
   全局 $currentlang;
   做连接();
   $pnew = mysql_query("SELECT * FROM tutorials WHERE cat='ppn' AND lang='".$currentlang."' ORDER BY id DESC");
   而($pnewLine = mysql_fetch_array($pnew))
   {
         $pnX = $pnewLine['text'];
   }
   回声 $pnX; //如果这是数组,则不会打印。
   print_r($pnX); //试试这个来代替打印

}
于 2013-08-29T17:09:48.107 回答
1

首先停止使用mysql_usemysqli_pdo

我想你需要一个foreach

foreach($pnx as $pn)
{
    echo $pn;
}

最后,停止使用mysql_usemysqli_pdo

于 2013-08-29T17:14:55.220 回答
0

尝试这个:

$pnew = mysql_query("SELECT * FROM tutorials WHERE cat='ppn' AND lang='".$currentlang."' ORDER BY id DESC");
if ($pnew) {
  list($pnX) = mysql_fetch_row($pnew);
  echo $pnX;
}

如果您只期望 1 个结果,则循环没有意义。

于 2013-08-29T17:12:58.523 回答
0

看看这个:

while($pnewLine = mysql_fetch_array($pnew))

这实际上意味着

while(the variable $pnewLine receives the value of mysql_fetch_array($pnew))
{
    // Always executed
}

同时

while($pnewLine = mysql_fetch_array($pnew))

实际上意味着

while(the variable $pnewLine is equal to the value of mysql_fetch_array($pnew))
{
    // Not always executed
}

你看出区别了吗?

于 2013-08-29T17:14:05.207 回答