Sehr grosse Zahl in MySQL hinzufügen

sangula

Grünschnabel
Hallo,

ich möchte eine ca. 18 stellige Zahl in Dezimal und nicht in Exponentalschreibweise hinzufügen.

PHP:
$zahl = 12452365124512863;
$rechner = $zahl * 21;

$eintrag = "INSERT INTO zahlen (zahl) VALUES ('$rechner')";
$eintragen = mysql_query($eintrag);

Dann wird folgendes eingetragen: 2.6149966761477E+16

Aber ich möchte das dashier eingefügt wird (die Dezimal zahl): 261499667614770123

Jemand eine Idee wie ich die Exponentalzahl formatieren kann ohne das Abgerundet / Aufgerundet wird, sondern immer noch die gleiche Zahl einfach nur als Deziamalzahl eingetragen wird?

Hab schon was gesucht, folgende Befehle sind rausgekommen: abs(), float(), integer() konnte aber nichts richtiges damit anfangen.

Hoffe ihr könnt mir helfen.
 
Hi,

wenn das Feld zu klein ist, musst du dieses einfach vergrössern. Nimm bigint dafür.

Hier eine Übersicht über die Integerwerte, die gespeichert werden können:
http://dev.mysql.com/doc/refman/5.1/de/numeric-types.html


//edit: Alles falsch, die Zahl ist einfach zu gross für PHP. Hat also mit MySql hier nichts zu tun. Eine Lösung muss ich selbst erst suchen, oder jemand anders weis was ;)

//edit2: Mit print PHP_INT_MAX; kannst du sehen was maximal geht.
 
Zuletzt bearbeitet:
Also das Feld spielt ja keine Rolle...wird ja schon bei PHP falsch ausgegeben. Weil wenn ich die Zahl manuell in die Datenbank einfüg dann gehts. Und das mit dem Feld: Varchar

MAX_INT ist: 2147483647

Hm..ist es nicht möglich wenn der $rechner die Zahl errechnet hat. Die Lösung zu formatieren das es eine Dezimalzahl ist und dann als Textstring in die DB einzufügen..

Kann doch nicht sein das jetzt PHP eine solche Zahl nicht ausgeben kann..
 
PHP kann es nicht ohne eine zusätzliche Erweiterung...

Aber MySQL kriegt es hin... Allerdings teste ich hier auf einem 64bit System, musst mal bei 32bit testen ob es auch so funktioniert.

PHP:
<?php
$db = new mysqli('localhost', 'root', '', 'test');

$result = $db->query("SELECT 12452365124512863 * 21");

print_r($result->fetch_assoc());



?>
 
Nein geht nicht. MySQLi ist Serverseitig nicht installiert. Also hab ich den Code umgeschrieben, geht aber trozdem nicht.

PHP:
<?php
include("mysql.php");

$abfrage = "SELECT 12452365124512863 * 21";
$ergebnis = mysql_query($abfrage);
$say = mysql_fetch_assoc($ergebnis);

echo "$say";

?>

Hat jemand sonst eine Idee :rolleyes:

P.S: Ich kann serverseitig nichts installieren! Muss also irgendwie ohne eine Erweiterung auskommen..
 
PHP:
echo "$say";
Dabei kann auch nichts Sinnvolles zurückgegeben werden.

$say ist ein Array, genau das gibt dir auch das echo zurück. Macht dich das nicht stutzig?

Nimm an Stelle von echo einfach var_dump() oder das im Beispiel von Felix verwendete print_r, dann wirst du merken das es sehr wohl funktioniert.
.
 
Danke viel mal (vorallem an Felix). Habs nun hinbekommen.

Hier der Code für jemanden der vllt. das gleiche Problem hat.

PHP:
$number = "12312312312312312312";
$abfrage = "SELECT $number * 21";
$ergebnis = mysql_query($abfrage);
$say = mysql_fetch_assoc($ergebnis);
$numberb = implode($say);

echo "$numberb";
 
unschönen Variante wären:
- ein String verwenden (wenn du nicht damit rechnen musst)
- ein Array verwenden und mathematische Operationen selbst definieren
 
Zurück