SQL-Integer != PHP-Integer ?

ja, ich hab mal wieder etwas, was mir absolut nicht klar ist:

Ich habe meine Rollladen-Kontrolldaten (Instanz, Laufzeit etc.) in einer MySQL-DB als integer abgelegt. Wenn ich die rows nun auslese, will IPS, dass ich an manchen Stellen noch eine (int)-Funktion benutze…
Kann mir jemand das erklären ?

Mit dem (int) vor einer Variablen machst Du einen Typecast und wandelst die bisherige Darstellung in Zeichen in eine reine Zahl um. Oder meintest Du etwas anderes?

ja, was anderes :slight_smile:

ich bin davon ausgegangen, dass wenn ich in MySQL einen Wert in einer Integer-Spalte speichere, auch ein Integer zurückbekomme und nicht noch die (int)-Funktion benutzen muss (z.B. eine Instanz)

Wie holst du denn die Daten aus der MySQL? Hast da mal ein PHP-Schnippsel?

bei blau wird eingelesen und
an den rot markierten Stellen bringt er einen Typ-Fehler, wenn ich die (int)-Funktion weglasssen

<?

include "dbConnect.php";

$Bezeichnung = $GName;
$System = $Syst;

$Bezeichnung = "Esszimmer";
$System = "FS20";

$result = mysql_query("select Instanz, Position, Geoeffnet_Setzen, Blind, Geschlossen_Setzen, Letzte_Aktion, Laufzeit_Oeffnen, Laufzeit_Sonnenschutz, Sonnenschutz_Setzen from Rollladen where Bezeichnung ='".$Bezeichnung."'");

$row = mysql_fetch_array($result);

SetValueString("{$row["Position"]}", "läuft auf Sonnenschutz"); // Positionsvariable setzen

if ($System == "Homematic")
   HM_WriteValueFloat((int)"{$row["Blind"]}" , "LEVEL", 0.65); // Sonnenschutzposition
else
	{
   IPS_RunScriptEx(32757 /*[Rollladen/Markisen\Allgemeine Scripte\Rollladen oeffnen]*/,Array("GName" => $Bezeichnung,"Syst" => $System));  //Rollladen Position oben
	IPS_SetScriptTimer("{$row["Geoeffnet_Setzen"]}",  0);  //Timer löschen falls hochfährt
	IPS_Sleep("{$row["Laufzeit_Oeffnen"]}" * 1000);
   FS20_SwitchDuration((int)"{$row["Instanz"]}" , false, (int) "{$row["Laufzeit_Sonnenschutz"]}"); // herunterfahren
   IPS_SetScriptTimer("{$row["Sonnenschutz_Setzen"]}",(int) "{$row["Laufzeit_Sonnenschutz"]}");  //Rollladen Position geschlossen setzen
   }

IPS_RunScriptEx(34446 /*[Allgemeine Scripte\Letzte Aktion]*/,Array("GID" => "{$row["Letzte_Aktion"]}"));

?>

Ah, ok. Ja, die eingebauten MySQL Funktionen von PHP geben die Daten immer als String zurück, egal wie die in der Tabelle definiert sind.

Wenn du Libaries wie ADODbnutzt dann werden die Results automatisch anhand der Metadaten der Tabellen angepasst.

komischerweise an den anderen Stellen funktioniert’s…aber gut dass ich das weiß, dann kann ich mich drauf einstellen - danke dir.