Autor Zpráva
Pinqui
Profil
Dobrý den došel jsem k problému s připojením do databáze v php4, kde mi nefunguje script vytvořen pro php5 a potřeboval bych poradit jak to napsat pro php 4 dočasně než hosting přejde do php5 děkuji zde je kód:
try {
  $db = new mysqli('localhost', 'user', 'pass', 'table');
  $db->set_charset('utf8');
  if(mysqli_connect_errno()) {
    throw new Exception('Vnitří chyba: Nepodařilo se spojit s databází.'); }
}
catch (Exception $e){
    echo  $e->getMessage();
}


Mockrát vám děkuji
Majkl578
Profil
pokud vim, mysqli je v php az od verze php5, tudiz prepsat na mysql. taktez bloky try a catch asi na php4 nepujdou.
spis nez workaround bych zmenil hosting, php4 uz je opravdu vykopavka.
Pinqui
Profil
Majkl578
Oni php4 už odstraňují a dávají php5 a dávají to na nové mašiny, ale potřebuji tak klidně v mysql udělat třídu, aby se mi to připojovalo pomocí $db->query(dotaz) abych na těch prá dní nemusel měnit všechny připojení k databázím. prosím pomozte, jak to napsat, aby to šlo v php4
Majkl578
Profil
ten kod nahrad timto:

class Database
{

  var $connection;

  function Database()
  {
    $this->connection = mysqli_connect('localhost', 'user', 'pass', 'table');
    if (!$this->connection) {
      trigger_error('DB connection not successful', E_USER_ERROR);
    }
  }

  function query($sql)
  {
     $result = mysqli_query($sql);
     if (!$result) {
      trigger_error('SQL ERROR ' . mysql_errno() . ': ' . mysql_error(), E_USER_ERROR);
    }
    return $result;
  }

}

$db = new Database;

je pravdepodobne, ze budes potrebovat i nahrady za jine funkce, napr. mysqli::fetch_assoc, to muzes udelat pridanim prislusne nahrady mysqli metody do teto tridy, napr:
function fetch_assoc($res)
{
  return mysqli_fetch_assoc($res);
}


edit: ted jsem se dival do dokumentace, mysqli jako takove je v php jiz od php4.1, tudiz by melo stacit sesmolit si tridu (vice dokumentace: http://cz2.php.net/manual/en/class.mysqli.php)
Pinqui
Profil
Majkl578
Takže ta třída, kterou jsi napsal by měla být ok?? zkusím.

//edit
Fatal error: SQL ERROR 1046: No database selected in /data
Mno píše mit o chybu...takto přistupuji k db
  $data  = $db->query("select id, number from category"); 
          if($data->num_rows != 0){
          while($sel = $data->fetch_assoc()){...
Majkl578
Profil
omlouvam se,nekoukl jsem se do dokumentace, do mysqli_query se musi predat instance objektu, tudiz:
$result = mysqli_query($sql);

by melo byt:
$result = mysqli_query($this->connection, $sql);
Pinqui
Profil
Mno přepsal jsem mysqli na mysql, ale nějak mi to nejde a když dám mysql tak to hlásí:
Fatal error: Call to undefined function: mysqli_connect() in /dat

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: