Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP+MySQL - jak przerobic na komunikacje z MSSQL
Forum PHP.pl > Forum > PHP
Kaayl
Witam
Czy istnieje odpowiednik funkcji mysqli dla bazy mssql?
Mam skrypt robiacy sugestie dla pola input przystosowany do pobierania slownika z bazy mysql problem w tym ze musze go przerobic tak by wspolpracowal z baza mssql zamiast mysql, z czym nie ukrywam, mam spory problem i prosze o pomoc.

Kod
<?php
// ładuje moduł obsługi błędów
require_once('error_handler.php');
// ładuje plik konfoguracyjny
require_once('config.php');
// klasa, której zadaniem jest obsługa funkcji podpowiadania i autouzupełniania po stronie serwera
class Suggest
{
  // obsługa bazy danych
  private $mMysqli;
  // konstruktor, otwiera połączenie z bazą
  function __construct()
  {  
    // łączy z bazą
    $this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
  }
  // destruktor, zamyka połączenie z bazą
  function __destruct()
  {
    $this->mMysqli->close();
  }
  // zwraca nazwy wszystkich funkcji, które zaczynają się od wartości $keyword
  public function getSuggestions($keyword)
  {
    // obcina łańcuch słowa kluczowego
    $patterns = array('/\s+/', '/"+/', '/%+/');
    $replace = array('');
    $keyword = preg_replace($patterns, $replace, $keyword);
    // tworzy zapytanie SQL, które pobiera pasujące nazwy funkcji z bazy
    if($keyword != '')
      $query = 'SELECT name ' . 'FROM suggest ' .  'WHERE name LIKE "' .
        $keyword . '%"';
    // jeśli słowo kluczowe nie zostało podane, nie zwraca nic
    else
      $query = 'SELECT name ' . 'FROM suggest ' . 'WHERE name=""';
    // wykonuje zapytanie SQL
    $result = $this->mMysqli->query($query);
    // tworzy odpowiedź w formacie XML
    $output = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
    $output .= '<response>';    
    // jeśli są wyniki, przegląda je w pętli i dodaje do danych wyjściowych
    if($result->num_rows)
      while ($row = $result->fetch_array(MYSQLI_ASSOC))
        $output .= '<name>' . $row['name'] . '</name>';
    // zamyka strumień wyjściowy
    $result->close();
    // dodaje znacznik kończący plik
    $output .= '</response>';  
    // zwraca wyniki
    return $output;  
  }
//koniec klasy Suggest
}
?>
erix
Zostaje Ci tylko PDO.
Kaayl
Ok. Poczytam o tym i sprobuje dolozyc ta klase. Dzieki za podpowiedz. Jutro napisze czy mi sie udalo lub znowu Cie poprosze o pomoc :]

Lipa narazie. Nie wiem jak sie za to zabrac. Podpowiedzcie cos wiecej...
erix
Pokaż jak próbowałeś.
gcdreak
Zastosuj wzorzec projetowy Adapter.
fander
function __construct()
{
// łączy z bazą
$this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
}

Użyj PDO

stwórz w klasie zamiast new mysqli(host,user,pass,database) new PDO(dsn,user,pass)

Docelowo to powinno się robić tak że tworzysz interfejs DbConnection w którym masz wszystkie potrzebne metody a następnie klasy z odpowiednimi atrybutami.
viking
http://www.microsoft.com/Sqlserver/2005/en...php-driver.aspx może się przydać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.