这是我的代码:
<?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代替?答:我正在使用include
功能(我不知道它的真实姓名)并且工作正常。
顺便说一下,doConnect();
函数运行正常。到目前为止,我已尝试使用全局变量,但它仍然无效。谢谢你的关注!
答案 0 :(得分:3)
请检查您的功能。在这里,您不是从while循环数组中检索数据
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 = $pnewLine['text']; } echo $pnX; //if this is array then it won't printed. print_r($pnX); //try this to print instead }
答案 1 :(得分:1)
首次使用mysql_
使用mysqli_
或pdo
我认为您需要foreach
foreach($pnx as $pn)
{
echo $pn;
}
最后,停止使用mysql_
使用mysqli_
或pdo
答案 2 :(得分: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个结果,则循环没有意义。
答案 3 :(得分: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
}
你发现了差异吗?