Autor Zpráva
Zlomenina
Profil
Resim databasovou aplikaci. Protoze mam malo zkusenosti, napred ji chci resit pomoci PHP - ODBC - MySQL, pozdeji pro zvyseni vykonu PHP - ODBC - ORACLE. Nakonec to bude jeste trosku komplikovanejsi, ale to ted neni podstatne. Pouzivam PHP 5.0.4, MySQL ODBC 3.5.1 driver, MySQL-4.0.24-win.
Napred se spojim s ODBC, pomoci funkce odbc_connect( $DNS, $User, $Password ) - to je vse OK
Potom chci poslat SQL dotaz pomoci funkce odbc_exec( $Connect_ID, $Query ) - a tady je problem.
Prestoze $Connect_ID ziskam ze zadosti o spojeni, tak pri volani a vykonavani funkce odbc_exec mi php hodi tuhle hlasku:

Warning: odbc_exec(): 4 is not a valid ODBC-Link resource in C:\Program Files\Apache Group\Apache2\htdocs\windros\myODBC.inc on line 40

V myODBC.inc mam definovanou vlastni tridu - interface pro komunikaci mezi PHP a ODBC, zde se taky provadi funkce odbc_exec. Napada Vas neco, uz sem to resil vcera cely den. A jedine co me napada je, ze mam spatny interpreter PHP. Ale treba je to nekde jinde. Pouzivam pravidla OOP s PHP 5, tak mozna zkusit nejakou vyssi verzi, nevim. Ale moc se mi do toho nechce...
Zlomenina
Profil
Vypada to na problem se vkladanim souboru pomoci include(). Zkousel jsem i include_once, require, require_once ... to vsak problem neresi. Tak testuju dal. Je to docela zahada.
ronnie
Profil
Pokud tomu dobře rozumím, hláška hazí chybu, že funkce odbc_exec nedostává správný parametr ($Connect_ID), určitě jsi připojen k databázi? Resp. echo odbc_connect( $DNS, $User, $Password ) vypíše to, co má?
Zlomenina
Profil
No echo vypise 'Resource ID #6', coz je podle me spravne. Tohle si ulozim do promenne $Connect_ID.
Zlomenina
Profil
Tady je muj vytvor
define ( 'PERSISTANT', true );

interface communication1to3 {
public function getAnswer ( &$Query );
public function getNumberOfConnect();
public function getTimeOfConnect();
}

class communicationMyODBC implements communication1to3 {

private $Token;
private $TimeOfConnect;
private static $NumberOfConnect;

public function __construct ( &$DSN, &$User, &$Password ) {
switch ( PERSISTANT ) {
case true :
if ( !$this->Token = odbc_pconnect( $DSN, $User, $Password ) ){
$MSG = odbc_errormsg();
die( $MSG );
}
echo "Tohle je connect > ".$this->Token." \n";
break;
case false :
if ( !$this->Token = odbc_connect( $DSN, $User, $Password ) ){
$MSG = odbc_errormsg();
die( $MSG );
}
echo "Tohle je connect > ".$this->Token." \n";
break;
}
list( $msec, $sec ) = explode( " ", microtime() );
$this->TimeOfConnect = array( 'sec'=>(int)$sec, 'msec'=>(float)$msec );
++self::$NumberOfConnect;
}
public function __destruct() {
odbc_close( $this->Token );
}
public function getAnswer ( &$query ) {
if ( !$Answer = odbc_exec( $this->Token, $query ) ){
$MSG = odbc_errormsg();
die( $MSG );
}
return $Answer;
}
public function getNumberOfConnect () {
return self::$NumberOfConnect;
}
public function getTimeOfConnect () {
list( $msec, $sec ) = explode( " ", microtime() );
$sec -= $this->TimeOfConnect['sec'];
$msec -= $this->TimeOfConnect['msec'];
$Time = array ( 'sec' => $sec, 'msec' => $msec );
return $Time;
}
}
Zlomenina
Profil
Je to v souboru myODBC.inc a ten vkladam do index.php na zacatku a pozdeji vytvarim instanci tehle tridy a volam jeji funkce
Zlomenina
Profil
index.php vypada treba nejak takhle

<?php

include("myODBC.inc");

$DSN = "Database MySQL";
$User = "blabla";
$Password = "blabla";


$IF_AppDB = new communicationMyODBC( $DSN, $User, $Password );
$Query = "SELECT * FROM coordinates_system";
$Answer = $IF_AppDB->getAnswer( $Query );
if ( $Answer ) odbc_result_all( $Answer );

?>
Zlomenina
Profil
Pokud nekomu neni problem jasny, prosim, ptejte se. Diky
Toto téma je uzamčeno. Odpověď nelze zaslat.

0