maik87
Goto Top

MySQLi - Problem mit fetch field()

Hallo zusammen,

ich bin seit einigen Tagen dabei eine etwas größere Eigenentwicklung von der MySQL-Schnittstelle auf MySQLi umzubauen.

Bis auf eine ein paar Stellen, an denen ich nicht verstehe wieso ich query statt real_query nutzen muss, läuft es eigentlich ganz gut. Der Unterschied ist doch, dass query "richtige" Ergebnisse zurückliefert und real_query nur true oder false, richtig?

Was mir aber noch wirklich Sorgen macht ist die Funktion fetch_field. Sie wird nur genutzt und den Typ der Datenbankfelder zu bestimmen und die Daten entsprechend zu escapen.
Ich habe eine Datenbanktabelle mit der Kollation utf8_general_ci mit einem Datumsfeld. Datenbankconnection ist auf utf8 eingestellt. Mit der MySQL-Schnittstelle wurde das Feld als Date erkannt, MySQLi liefert

object(stdClass)#6 (13) { ["name"]=> string(4) "Date" ["orgname"]=> string(4) "Date" ["table"]=> string(6) "config" ["orgtable"]=> string(6) "config" ["def"]=> string(0) "" ["db"]=> string(7) "asa_dev" ["catalog"]=> string(3) "def" ["max_length"]=> int(0) ["length"]=> int(10) ["charsetnr"]=> int(63) ["flags"]=> int(4225) ["type"]=> int(10) ["decimals"]=> int(0) }

also ein Integer. Was mache ich falsch bzw. muss ich machen, damit die Spalte wieder als Datumswert erkannt wird?


Viele Grüße
Maik87

Content-Key: 279154

Url: https://administrator.de/contentid/279154

Printed on: April 24, 2024 at 22:04 o'clock

Member: Guenni
Guenni Aug 05, 2015 at 10:46:41 (UTC)
Goto Top
Hi Maik87,

das Beispiel fetch_field funktioniert schon, bringt aber als Ergebnis für die Datentypen einen Dezimalwert.

Um den Datentyp eines Felds abzufragen, kannst du auch die Datenbank-Syntax verwenden. Z.B.:

"show columns from temperaturen like 'Datum'"

Als Ergebnis erhält man ein Array mit den Feldinformationen.

Script mit PDO, MySQLi ist mir zuviel "Gefrickel" face-sad

<?php 
$conn = new PDO("mysql:host=localhost;dbname=test", "guenni", "guenni");  
$query = "show columns from temperaturen like 'Datum'";  
$stmt = $conn->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE HTML >
<html>
<head>
<title>Untitled</title>
</head>
<body>
<pre>
<?php
echo "<h4>Mit var_dump</h4>";  
var_dump($result);
echo "<h4>Mit foreach</h4>";  
foreach($result as $key => $value){
 echo $key." = ".$value."<br>";  
}
echo "<h4>Zugriff auf eine Feldinfo</h4>";  
if($result["Type"] == "date"){  
 echo "Das Feld ".$result["Field"]." ist Datentyp ".$result["Type"];  
}
?>
</body>
</html>

Gruß
Günni