Auflösen der Diskrepanz bei der Rückgabe ganzzahliger und numerischer Werte von MySQL in PHP
Das Abrufen von Daten aus MySQL mit PHP kann rätselhaft sein Es kommt zu Typinkonsistenzen, bei denen ganzzahlige und numerische Spalten als Zeichenfolgen anstelle der beabsichtigten Daten zurückgegeben werden Typen.
Das Treiberproblem
Es ist wichtig, den zugrunde liegenden Treiber zu bestimmen, der für die Datenbankkonnektivität verwendet wird. Das Problem liegt häufig an der Verwendung des nativen MySQL-Treibers, der nicht in der Lage ist, numerische Typen als Ganzzahlen zurückzugeben.
Identifizieren des MySQLnd-Treibers
Um festzustellen, ob dies der Fall ist Überprüfen Sie mithilfe des nativen MySQL-Treibers die Ausgabe von php -i. Wenn „mysqlnd“ im Abschnitt „pdo_mysql“ nicht erwähnt wird, verwenden Sie wahrscheinlich den nativen Treiber.
Wechseln zum MySQLnd-Treiber
Die Lösung liegt darin Wechsel zum mysqlnd-Treiber, der die korrekte Rückgabe numerischer Typen unterstützt. Unter Ubuntu kann dies erreicht werden durch:
sudo apt-get remove php5-mysql sudo apt-get install php5-mysqlnd sudo service apache2 restart
PDO-Einstellungen
Sobald der mysqlnd-Treiber installiert ist, stellen Sie sicher, dass die folgenden PDO-Einstellungen korrekt eingestellt sind:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
Zurückgegebene Werte
Nach der Implementierung des oben Gesagten Schritte, MySQL-Abfrageergebnisse geben wie erwartet numerische Typen zurück:
Ein Beispiel für die zurückgegebenen Werte wäre:
object(stdClass)[915] public 'integer_col' => int 1 public 'double_col' => float 1.55 public 'float_col' => float 1.5 public 'decimal_col' => string '1.20' (length=4) public 'bigint_col' => string '18446744073709551615' (length=20)
Das obige ist der detaillierte Inhalt vonWarum werden meine numerischen MySQL-Werte in PHP als Zeichenfolgen zurückgegeben und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!