2012-04-11 5 views
0

I eine mysql Tabelle haben, wobei nur ein Register, in dem die price Bereich decimal(6,2)-Typ ist, mit dem Wert des 60.35Retrieve dezimalen Daten aus mysql und in einem Array

den Code Betrachten oben:

$prices = mysql_query("SELECT id, price FROM products"); 
while ($pr = mysql_fetch_assoc($prices)) { 
    $prics[$pr['id']]=$pr['price']; 
    echo $pr['price'].' - '.$prics[$pr['id']]."\n"; 
} 

Der Ausgang ist falsch:

60.35 - 6

Die richtige wäre:

60.35 - 60.35

habe ich versucht, die gleiche Situation ohne mysql query:

$var = array(60.35,'60.35',60); 
$var2[0] = $var[0]; 
$var2[1] = $var[1]; 
print_r($var2); 

Und es funktioniert wie erwartet:

Array 
(
    [0] => 60.35 
    [1] => 60.35 
) 

Wie kann ich das Problem lösen?

Antwort

0

Ich denke, dass das Problem ist, dass PHP den zweiten Schwimmer in einen String konvertiert, weil sie in einen String verkettet sind, während es der erste

EDIT ein Schwimmer betrachten - nein, das funktioniert perfekt, muss es etwas anderes sein

http://codepad.org/UbeJ20Wh

+0

Das Problem hat Ursprung in der mysql query –

0

Das Problem Linie ist wahrscheinlich

$prics[$pr['id']]=$pr['price']; 

Versuchen Sie, die Art wie zwingen:

settype($prics[$pr['id']], "float"); 
$prics[$pr['id']]=$pr['price']; 
echo $pr['price'].' - '.$prics[$pr['id']]."\n"; 
+0

Es andere Fehler zurückgibt: Es können nur Variablen als Referenz übergeben werden, indem –

+0

Versuchen eine neue Variable $ p, die $ p = $ pr ['price'] 'setzt und dann $ prics [$ pr ['id']] = $ p' setzt – citizenen

0

löste ich das Problem, indem das Array var Initialisierung vor seiner Verwendung:

$prics = array();