2015-05-23 4 views
0

Может кто-нибудь объяснить мне, почему этот (сомнительный, устаревший и иначе грешный) PHP-код иногда возвращает строку, содержащую два символа звездочки один за другим? Другими словами, intval() иногда возвращает пустую строку.intval() в php возвращает пустую строку?

Какое значение может иметь столбец 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* 

Полный ответ должен включать в себя минимальные исправления кода выше (без использования что-то вроде «если ($ avcost ==„“)» :-), что не гарантировать отсутствие двойной звездочки на выходе. Спасибо.

+0

Что такое выход: 'var_dump ($ row [0]); '? – Rizier123

+0

У вас, вероятно, есть строки в таблице, где 'avcost' равно null (не то же самое, что и 0). Вам нужно будет явно протестировать и заменить соответствующее значение. –

+0

Но avcost определяется как double и not-nullable. – tobi85

ответ

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* 
Смежные вопросы