有人可以向我解释为什么这个(可疑的,过时的和有罪的)PHP代码偶尔会返回一个包含两个星号字符的字符串?换句话说,intval()偶尔会返回一个空字符串。
avcost列对该行有什么价值(avcost被定义为double)?
$rows = mysql_query("SELECT avcost FROM singles" );
if (!$rows) return 5;
$buffer = "";
while ($row = mysql_fetch_row($rows))
{
$avcost = intval($row[0]); // round it
$buffer .= $avcost . "*";
}
echo $buffer; // Sometimes it echos something like: 5*0*3*0*34**4*5*
完整的答案包括对上述代码的最小修正(不使用" if($ avcost =="")" :-),保证不会出现双星号在输出中。谢谢。
答案 0 :(得分:0)
完整的答案包括对上述代码的最小修正(不使用" if($ avcost =="")" :-),保证不会出现双星号在输出中。谢谢。
我会尝试: - )
$rows = mysql_query("SELECT `avcost` FROM `singles`");
if (!$rows) return 5;
$buffer = "";
if (mysql_num_rows($rows) == 0) return 5; // Just if you want
while ($row = mysql_fetch_assoc($rows))
{
$avcost = round($row['avcost']); // round it
$buffer .= $avcost . "*";
}
echo $buffer; // Sometimes it echos something like: 5*0*3*0*34**4*5*
如果它不起作用,请尝试相反并向我提供输出:
$rows = mysql_query("SELECT `avcost` FROM `singles`");
if (!$rows) return 5;
$buffer = "";
if (mysql_num_rows($rows) == 0) return 5; // Just if you want
while ($row = mysql_fetch_assoc($rows))
{
$avcost = round($row['avcost']); // round it
die(var_dump($avcost, intval($avcost), doubleval($row['avcost']), $row['avcost'])); // Debug purpose
$buffer .= $avcost . "*";
}
echo $buffer; // Sometimes it echos something like: 5*0*3*0*34**4*5*