SQL Anbindung

Hallo IPS`ler

Ich weiss ich weiss dieses Thema kommt schon zum xten mal dran. Ich habe alle Foren durchsuch, was gefunden, hat mir aber leider nichts gebracht. Daher erstelle ich jetzt mal ein Thema.

Ich Versuche einfach nur eine Variable in eine SQL Datenbank (MySQl Win32 5.0) zu schreiben.

Meine PHP Version: 5.1.6

PHP.ini wie folgt ergänzt:
extension = „php_mysql.dll“ Version 5.1.5.5
extension = „libmysql.dll“
extension= „php_gd2.dll“ Version 5.1.7.7

HIer mein Script, mit dem ich nicht weiter komme:

<?
/*
*******************************
IP-SYNCOM Event Scripting
*******************************
*/

//File: gesamt.ips.php

$date= date("d.m.y");
$time= date("H:i:s");
$temp= GetValueFloat("srv-wsus");   //Aussentemp.
$server= GetValueString("sql_server");
$user= GetValueString("sql_user");
$passw= GetValueString("sql_passw");

$dbh=mysql_connect("$server", "$user", "$passw", "ips_meg");
if (!$dbh) {
   echo "Connect error!";
   exit;
}

$result = mysql_query("INSERT INTO test(date, time, temp) VALUES('$date','$time','$temp')");
if (!$result) {
   echo "Insert Error!";
}
mysql_close($dbh);

?>

Als Fehlermeldung bekomme ich immer: Insert Error!

Ich finde leider in den Log`s vom MySQL leider nichts. Wenn ich diesen Befehl insert… ohne Variablen, dafür mit Werte ersetze und im PHPmyAdmin einfüge, funktionierts.

Wäre echt nett von euch wenn Ihr ein paar Tips für mich hättet.

Gruß

Andy

Die Variablen sollten nur in ‚‘ stehen wenn es sich Zeichenketten handelt. Entferne mal die ‚‘ vor und hinter den Variablen und versuche es dann.

Gruß
Maik

Es gibt einen Unterschied zwischen einfachen und doppelten Anführungszeichen.

Versuchs so:

$result = mysql_query("INSERT INTO test(date, time, temp) VALUES(".$date.",".$time.",".$temp.")");

ist ne Alternative zu dem Vorschlag von maik…

Toni

Hallo,

erstmal danke für deine Antwort. Ich habe jetzt die " gelöscht, hat leider nichts gebracht. Fehlermeldung ist immernoch die gleiche

$dbh=mysql_connect($server, $user, $passw, "ips_meg");

Es gibt einen Unterschied zwischen einfachen und doppelten Anführungszeichen.

Versuchs so:

Ja so sollte es auch gehen. Aber ich bin schreibfaul :wink:
Deswegen mach ich das meist in der Art:

$result = mysql_query("INSERT INTO test(date, time, temp) VALUES($date,$time,$temp)"); 

Gruß
Maik

@andy-meyer
Antworten haben sich überschnitten …

Den Code in Deinem letzten Beitrag verstehe ich nicht (sehe kein Zusammenhang zum Problem).

Ansonsten $result mal mit echo ausgeben und überprüfen, notfalls Code kopieren und direkt im SQL-Fenster ausführen (ggf. Ausführung nach der Ausgabe mit die() abbrechen.

Gruß
Maik

Hallo Maik,

ich habe beide Möglichkeiten von euch probiert, bei beiden kommt der gleiche Fehler.

Wenn ich im SQL Editor vom myPHPAdmin den Befehl

INSERT INTO test(date, time, temp) VALUES('12.12.02','12:12:12','55')

eingebe, funktioniert es.

Wie genau muss die Syntax sein, damit er das mim echo ausgibt?

Mein Script hätten jetzt den aktuellen Stand:

<?
/*
*******************************
IP-SYNCOM Event Scripting
*******************************
*/

//File: gesamt.ips.php

$date= date("d.m.y");
$time= date("H:i:s");
$temp= GetValueFloat("srv-wsus");   //Aussentemp.
$server= GetValueString("sql_server");
$user= GetValueString("sql_user");
$passw= GetValueString("sql_passw");

$dbh=mysql_connect("server-im-web", "benutzer", "passwort", "ips_meg");
if (!$dbh) {
   echo "Connect error!";
   exit;
}
$result = mysql_query("INSERT INTO test(date, time, temp) VALUES('12.12.02','12:12:12','55')");
if (!$result) {
   echo "Insert Error!";
}
mysql_close($dbh);

?>

Danke schon mal für eure Bemühungen!!!

ah… klar… du fügst strings ein…

versuch mal die Anührungszeichen zu escapen.


$result = mysql_query('INSERT INTO test(date, time, temp) VALUES(\''.$date.'\',\''.$time.'\',\''.$temp.'\')');

Toni

@@ Tonic1024

leider kein erfolg. Hab mein String durch deins ersezt. Leider ohnen Erfolg.

Es kommt immer noch Insert Error!

Gruß

Andy

Hier nochmal meine komplette php.ini als PDF (html war gesperrt :frowning: )

Microsoft Word - PHP Version 5.doc.pdf (95.3 KB)

Mein Fehler!

Oben korrigiert…

Ich glaube nicht, dass es an den php-Einstellungen liegt.

Gib doch mal $result aus. Einfach:

echo $result;
die();

einfügen und schauen ob die SQL Syntax richtig ist.

Gruß
Maik

Hallo,

ist das Datumsformat korrekt eingestellt? Ich habe mit den Datumformaten immer wieder mal Probleme. Es kann sein, dass Dein ODBC-Treiber etwas anderes will, als Dein SQL-Server.

Probiere erst mal einen Insert mit Inteegerzahlen und Strings (einfach eine neue Tabelle test2 erzeugen mit int zahl und varchar(200) textfeld).

Dann sollte:
INSERT INTO test2 (zahl, textfeld) VALUES ( 120,‚dat is en Text, ne‘)

auf jeden Fall funtionieren.

Ich wünsche einen schönen Abend.

Christoph.

ganz sicher geht man, wenn man „anständiges SQL-Format“ wählt:

2008-03-14

Gruß,

Toni

Die Mysql-Extensions verwenden zum Glück kein ODBC.:slight_smile:

echo $result;
die();

->wird auch nur „“ ausgeben, da lt. Definition nur true/false bei DML zurück kommt.
Besser wäre

 echo mysql_error();

Man kann dem Server auch das Datumsformat vorgeben, wenn es kein Standard wie schon erwähnt ist, z.B. STR_TO_DATE(‚04/31/2004‘, ‚%m/%d/%Y‘) -> ‚2004-04-31‘.
Die Formate stehen im Mysql-Handbuch.

Tommi

Hallo IPS`ler

hab den Fehler gefunden.

@@tommi

Danke für deinen Tip mit dem echo…

Habe die Meldung bekommen es sei keine Datenbank ausgewählt.

Ich habe jetzt folgendes hinzugefügt…

// benutze Datenbank ips_andy
$db_selected = mysql_select_db('ips_andy', $dbh);
if (!$db_selected) {
    die ('Kann $db nicht benutzen : ' . mysql_error());
}

und es funktioniert!!!

Danke Nochmal an alle beteiligten !!!

Gruß

Andy Meyer

Guten Abend an alle,

ich hätte da noch eine kleine Frage zu einem SQL export. Dachte mir einfach ich greife meinaltes Thread wieder auf :slight_smile:

Ich hab eine Datenbank in der meine Stomkosten stehen. Ich wollte jetzt im Designer eine Möglichkeit haben Diese als Kosten kummuliert dar zu stellen. Meine Idee ist das per Script die Daten aus der SQL Datenbank zu lesen und diese in eine Variable zu Speichern.

Das SQL Query wäre folgendes:

SELECT date, SUM( kwstd )
FROM `strom`
WHERE `date` LIKE '2008-05-%'
GROUP BY `date`
LIMIT 0 , 90

Das Ergebnis sieht wie folgt aus:

2008-05-01 221.430999964476

Wie bekomme ich die Daten von dem SQL Query in die Variable ?

Ich stehe glaug ich auf dem Schlauch…

Hier mein nicht funktionierendes Script:

<?
/*
*******************************
IP-SYNCOM Event Scripting
*******************************
*/

//File: gesamt.ips.php
$db= "ips_andy";
$server= GetValueString("sql_server");
$user= GetValueString("sql_user");
$passw= GetValueString("sql_passw");

// zur Datenbank verbinden
$dbh=mysql_connect("$server", "$user", "$passw", "$db");
if (!$dbh) {
   echo "Connect error!";
   exit;
}
// benutze Datenbank ips_andy
$db_selected = mysql_select_db('ips_andy', $dbh);
if (!$db_selected) {
    die ('Kann $db nicht benutzen : ' . mysql_error());
}

$result = mysql_query("SELECT date, SUM( kwstd ) FROM `strom` WHERE `date` LIKE '2008-05-%' GROUP BY `GROUP` LIMIT 0, 90 ");

SetValueFloat("designer_strom", ?????????????  );

echo $result;
die();

echo mysql_error();

if (!$result) {
   echo "Insert1 Error!";
}

?>

Das Ergebnis vom echo ist : Resource id #3

Ich danke euch schon wieder mal im Vorraus Andy


$result = mysql_query("SELECT date, SUM( kwstd ) FROM `strom` WHERE `date` LIKE '2008-05-%' GROUP BY `GROUP` LIMIT 0, 90 ");

// $result=substr ( '2008-05-01  	221.430999964476', 13 );
$result=substr ( $result, 13 );

SetValueString( "designer_strom", $result );

Warum willst du für den Designer einen Float-Wert setzen? Wenn du den Wert nur anzeigen möchtest reicht doch ein String.

Nicht getestet, aber zu PHP Fragen hilft mir meist selfphp weiter ;).

Hallo Ralf,

danke erstmal für deine Hilfe. Ich habe jetzt nur das Problem, das das $result Ergebnis immer „Resource id #3“. Eigendlich sollte hier ja " 2008-05-01 221.430999964476" kommen.

Wenn ich den SQL Befehl

SELECT date, SUM( kwstd ) FROM `strom` WHERE `date` LIKE '2008-05-%' GROUP BY `GROUP` LIMIT 0, 90

in dem PHP-Administrator Admin abschicke kommt das richtige Ergebnis.

Jemand ne Ideee

Danke Andy

Hallo Andy,

am Sonntag-Vormittag und ohne Blick ins Handbuch würde ich jetzt mal sagen, dass du das Ergebnis noch auslesen musst. Schau mal im Manual unter mysql_fetch_row.

Gruß
Dieter