这是我的代码:
<?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();
功能运行良好。到目前为止,我已经尝试使用全局变量,但它仍然不起作用。感谢您的关注!
请检查您的函数。在这里,你不是从while循环的数组中检索数据
函数my(){全球$pnew;全局$pnewLine;全局$pnX;全局$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=$pnewLine['text'];}echo$pnX//如果这是数组,则不会打印。print_r($pnX)//改为尝试打印}
第一次停止使用mysql_
时使用mysqli_
或pdo
我想你需要foreach
foreach($pnx as $pn)
{
echo $pn;
}
最后,停止使用mysql_
使用mysqli_
或pdo
试试这个:
$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个结果,那么循环就没有意义了。
看看这个:
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
}
你发现区别了吗?