Hilfe - MySQL-Anbindung funktioniert nicht

Hi an alle,

ich möchte die Anbindung meiner IP-Symcon-Instanz an eine MySQL-Datenbank realisieren. Als Grundlage habe ich den Beitrag http://www.ip-symcon.de/forum/showthread.php?t=144 verwendet. Leider ist es nicht so einfach wie dort beschrieben.

Ich habe eine php.ini erstellt

extension_dir=c:\Programme\IP-Symcon\modules
extension=php_mysql.dll

und die Datei „php_mysql.dll“ aus der aktuellen „php-5.0.4-Win32“ in das Verzeichniss „modules“ kopiert.

Nach dem Starten von IP-SYMCON erhalte ich die Fehlermeldung „LIBMYSQL.dll nicht gefunden…“. Also habe ich auch diese Datei aus der PHP-Distribution in das IP-SYMCON-Verzeichnis kopiert, da ich nur dort keine Fehlermeldung beim Starten bekomme.

Leider funktioniert dann ein Aufruf der entsprechenden Funktion auch nicht „Call to undefined function pg_connect()…“.

In dem, bei jedem Start angelegten, Log-File fand ich noch folgenden Eintrag:
… | MESSAGE | ModuleLoader | >Error Loading: php_mysql.dll …

Hat irgend jemand eine fuktionierende Anbindung an eine MySQL-DB oder eine Idee warum es bei mir nicht funkioniert ?

Hallo Michael

pg_connect ist so viel ich weiss der Befehl um mit einer Postgredatenbank zu verbinden. Zu MySql lautet der Befehl „mysql_connect“.

Lege Dir mein Script bei. Das läuft allerdings mit MySqli. Dazu musst du in der php.ini die dll mysqli angeben und diese auch in das Verzeichnis kopieren.

gruss remo

mysqli.txt (1.19 KB)

Hallo Michael,

also ich habe gestern abend die Anbindung mit mysql gemacht und es funktioniert. Hier meine Vorgehensweise:

  1. PHP.INI erstellen im Root-Verzeichnis von IP-SYMCON:

G:\Programme\IP-SYMCON\php.ini
extension_dir=g:\Programme\IP-SYMCON
extension=php_mysql.dll

>G< ist hier mein Laufwerk!

  1. Download folgende PHP Extension:
    php-5.0.4-Win32.zip

  2. Entpacken der Extension und folgende Dateien

libmysql.dll
php_mysql.dll

nach g:\Programme\IP-SYMCON\ kopieren.

  1. Neustart von IPS

  2. Pruefung, ob mysql eingebunden ist:
    es darf keine Fehlermeldung beim Start von IPS erscheinen, anderenfalls hast Du eine falsche PHP Version benutzt. Die 5.1 Version funktioniert uebrigens nicht!.
    einfach ein Script anlegen und diesen Inhalt rein:

<?
phpinfo();
?>

im Output kannst Du dann ueberpruefen, ob mysql richtig eingebunden ist.

Ich hoffe, das hilft Dir weiter.

Gruss Torro

Hi,

danke, ihr hattet beide Recht. Einerseits war die PHP-Version buggy und
andererseits erwartete die MySQL-Datenbank natürlich ein eigenes Befehlsset.

Jedenfalls funktioniert die Anbindung an meine MySQL-Datenbank jetzt auch aus dem IP-Symcon heraus.

Gruß
Michael.

hallo,

habe php so eingebunden wie angegeben, dennoch bekomme ich immer die fehlermeldung in der webseite:

Notice: Use of undefined constant pid - assumed ‚pid‘ in line 93

meine php.ini sieht so aus (habe die original php.ini genommen aus dem ipsymcon verzeichnis und um die einträge erweitert):

[com]
com.typelib_file = „“
com.allow_dcom = „true“
com.autoregister_typelib = „true“
com.autoregister_casesensitive = „false“
com.autoregister_verbose = „true“
extension_dir=C:\Programme\IP-SYMCON
extension=php_mysql.dll

danach habe ich von der version php-5.0.4-win32 aus dem zip archiv die dateien libmysql.dll und php_mysql.dll ins ipsymcon verzeichnis kopiert und natürlich ip symcon neugestartet. sollte doch so alles richig sein, oder?

woran kann das liegen?

wenn ich die seite aber im internet auf meine webpräsenz lade, dann funktioniert sie einwandfrei.

machs mal so:

 
extension_dir=C:\Programme\IP-SYMCON
extension=php_mysql.dll

die ganze COM sache kann eigentlich raus

paresy

Hallo,

also ganz korrekt ist es nicht, gehoert ausserdem auch nicht zur „com“ Gruppe. Aendere es mal so:



```php

extension_dir = "C:\Programme\0.90-IP-SYMCON\"
max_execution_time = 150
extension = php_mysql.dll

[com]
com.typelib_file = ""
com.allow_dcom = "true"
com.autoregister_typelib = "true"
com.autoregister_casesensitive = "false"
com.autoregister_verbose = "true"

Uebrigens koennen Dir die „com“ Funktionen Probleme mit dem Speicher verursachen, die sind nicht sauber implementiert.

Gruss Torro

ich hatte das drin, weil es im ipsymcon war. ich habe das einfach nur übernommen. ich habe das mal rausgemacht.

leider immer noch kein erfolg.

ich verwende folgendes im script:

include(„db_connect.php“);
include(„connection.php“);
$sqlStr = „SELECT * FROM tabellenname“;
$result = mysql_query($sqlStr, $linkID)
or die($sqlStr.’<br>’.mysql_error());
while ($daten=mysql_fetch_assoc($result))
{
echo($daten[date] . " | " . $daten[time] . " | 0" . $daten[event] . „<br>“);
}

db_connect.php:
<?php
$server = „x.x.x.x“; // Serveradresse
$username = „xxx“; // Benutzername
$password = „xxx“; // Kennwort
$database = „12345“; // Datenbank
?>

connection.php:
<?php
$linkID = mysql_connect($server,$username,$password);
if (!$linkID) die(„kein verbindung“);
if (!mysql_select_db($database, $linkID)) die(„fehler“);
?>

komisch, wie gesagt, wenn ich die seiten einfach hochlade auf meine internetseite, dann klappt das einwandfrei. wo kann der fehler sein und wie bekomme ich den behoben?

Hallo pleibling,

ist schwierig, sich bei Dir immer wieder hineinzufitzen, wenn Du nur die Haelfte der Infos hier schreibst.

Was mir jetzt fehlt:

Hast Du IPS gestoppt nach der Aenderung und dann neu gestartet? Anders wird die php.ini nicht neu geladen.

Und wenn es dann nicht geht, bitte nochmal die aktuelle Fehlermeldung posten.

Gruss Torro

Notice: Use of undefined constant pid - assumed ‚pid‘ in line 93

die angebene Zeile 93 anzugeben würde auch schon helfen.

Der Fehlermeldung nach hast Du evtl irgendwo „pid“ statt „$pid“ geschrieben.
Das ist übrigens nur eine Warnung, aber wenn Du dort Werte erwartest, wird da nichts ankommen…

Tommi

sorry, ich hatte natürlich ipsymcon neu gestartet. leider immer noch die selbe fehlermeldung.

ich verwende im script folgendes (zeile 93 ist die erste case-zeile):

<?php
include(„db_connect.php“);
include(„connection.php“);
$sqlStr = „SELECT * FROM xhomecontrol_calls“;
$result = mysql_query($sqlStr, $linkID) or die($sqlStr.’<br>’.mysql_error());
while ($daten=mysql_fetch_assoc($result))
{
echo("
case „play_“ . $daten[pid] . „“: {url = „mcecalls.php?filename=“ . $daten[pid] . „“; }
case „delete_“ . $daten[pid] . „“: {url = „mcedelcalls.php?pid=“ . $daten[pid] . „“; }
case „details_“ . $daten[pid] . „“: {url = „mcecalldetails.php?pid=“ . $daten[pid] . „“; }
");
};
?>

ich möchte in der ausgabeseite ungefähr sowas erstellen (ist teil eines javascripts):

case „play_1“:
{
url = „mcecalls.php?filename=nachricht_von_1737089XXX_am_18_05_2006_um_07_45_23.wav“;
}

wie gesagt, im web funktioniert das einwandfrei.

es liegt nicht an dem javascript. ich habe mir eine noch einfachere datei gemacht, diese sieht so aus:

<?php

if (!$_SERVER[„REMOTE_ADDR“] == „192.168.40.100“) {
echo(„Von dieser Adresse aus kein Zugriff!“);
exit;
};

$server = „x.x.x.x“; // Serveradresse
$username = „xxx“; // Benutzername
$password = „xxx“; // Kennwort
$database = „xxx“; // Datenbank

$linkID = mysql_connect($server,$username,$password);
if (!$linkID) die(„kein verbindung“);
if (!mysql_select_db($database, $linkID)) die(„fehler“);

$sqlStr = „SELECT * FROM xhomecontrol_calls“;
$result = mysql_query($sqlStr, $linkID)
or die($sqlStr.’<br>’.mysql_error());

echo(„Anrufe:<br><br>“);
while ($daten=mysql_fetch_assoc($result))

{
echo($daten[date] . " | " . $daten[time] . " | 0" . $daten[caller] . " | <a href=„calls.php?filename=“ . $daten[filename] . „“>" . $daten[filename] . „</a> | <a href=„calls.php?filename=“ . $daten[filename] . „“> > </a> | <a href=delcall.php?pid=“ . $daten[pid] . „> X </a><br>“);
}
echo("<br>Fertig!<br><br>");

if(isset($filename)) {
echo("<object classid=CLSID:05589FA1-C356-11CE-BF01-00AA0055595A height=1 width=1>
<param name=FileName value=„c:
achrichten\“ . $filename . „“>
<param name=AutoStart value=1>
<param name=PlayCount value=1>
<param name=ShowControls value=1>
<param name=ShowDisplay value=0>
</object>");
};

?>

da bekomme ich folgende fehlermeldung:

Notice: Use of undefined constant date - assumed ‚date‘ in line 27 Anrufe:

das anrufe kommt aus der seite, nicht von der fehlermeldung. zeile 27 ist die zeile mit dem echo in der while schleife.

hilft das weiter?

Hallo pleibling,

wie tommi schon schrieb, Du verwendest in den Arrays Konstanten, keine Variablen. Desweiteren ist date auch vorbelegt, wuerde ich also niemals als Variable verwenden.

diese Zeile:

 case \"play_" . $daten[pid] . "\": {url = \"mcecalls.php?filename=" . $daten[pid] . "\"; }

sollte besser so lauten:

 case 'play_' . $daten['pid'] . ': {url = "mcecalls.php?filename=' . $daten["pid"] . '"; }'

ich nehme mal an, das „pid“ der Array Name von „$daten“ ist. Falls das aber eine Variable sein sollte, dann musst Du es so schreiben:

 case 'play_' . $daten[$pid] . ': {url = "mcecalls.php?filename=' . $daten[$pid] . '"; }'

Ich hoffe, das hilft Dir als Ansatzpunkt zu Deiner Fehlersuche. Es ist auf jeden Fall eine fehlerhafte PHP Programmierung Deinerseits, hat also nichts mit irgendwelchen libs oder so zu tun.

Gruss Torro

Ich denke auch, dass der Fehler in den fehlenden ‚‘ ist.
Mit $daten[‚date‘] müsste es gehen. Sonnst versuche folgendes


$daten = mysql_fetch_object($result);
echo($daten->date . " | " . $daten->time ...

„date“ würde ich auch nicht als Variablenname benützen.

Gruss

super hat geklappt. lag tatsächlich an den hochkommata’s.

seltsam das es dann im web klappte.

danke nochmal füre eure schnelle hilfe …