Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php5] mysqli
marcinek37
post 28.08.2012, 09:27:25
Post #1





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

Ostrzeżenie: (0%)
-----


Witam,
Staram się napisać mały CMS korzystając z dobrodziejstw PHP5, działając na WebServ. Poniżej przedstawię kilka kwestii, które chciałbym pokrótce omówić,

1. postanowiłem skorzystać z funkcji mysqli - tu były pierwsze schody, bo musiałem uruchomić specjalną bibliotekę na WebServ - czy to częsty problem na serwerach, że nie obsługują mysqli? czy są konkretne przesłanki, aby korzystać z tej funkcji, czy raczej nic to nie daje?

2. mam plik db.php, on includuje się do pliku systemowego, a w nim mam coś takiego:
  1. <?
  2. include('db.php');
  3. $db = new mysqli($dbHost, $dbLogin, $dbPasswd, $dbName);
  4. if(mysqli_connect_errno() > 0) { throw new Exception('Przerwa techniczna');}
  5. else { $db->query('SET NAMES \'utf8\''); }
  6. ?>


a) czy takie połączenie za pomocą mysqli jest poprawne?
B) $db->query('SET NAMES \'utf8\''); // na WebServie jest problem z tabelami MySQL, które mają kodowanie utf8_unicode_ci i tylko za pomocą takiej komendy działa wszystko poprawnie

3. w niektórych momentach w systemie są formularze, które będą uzupełniane przez internautów, zatem napisałem taką małą funkcję:
  1. <?
  2. function check_sql($code, $db){
  3. return $db -> real_escape_string(stripslashes($code));
  4. }
  5. ?>

// czy ona wystarczy, aby zabezpieczyć się przed SQL INJECTION? po prostu każda zmianna, która wejdzie do zapytania SQL, będzie musiała ją przejść

4. mam plik info.php, który ukazuje zwyczajne podstrony, includuje on plik systemowy, w nim jest klasa, a następnie operacja, w której następuje pobranie danych (nie będę przedstawiać całego kodu, bo nikomu nie chciałoby się analizować)

  1. <?
  2. $id = (int)$_GET['id'];
  3. $query = 'SELECT * FROM _mps_info WHERE id='.$id;
  4. $this->data = $db->query($query);
  5. if ($this->data->num_rows == 0){ echo'Błąd'; }
  6. else{ $this->data = $this->data->fetch_assoc(); }
  7. ?>


a) czy taki kod jest poprawny "$this->data->num_rows"? pamiętam, że przy starych funkcjach każdy odradzał używania funkcji mysql_num_rows do liczenia ilości rekordów, gdyż wraz z liczbą rekordów, skrypt pobierał wszystkie pola, co obciążało serwer i sugerowano używania funkcji mysql_result, np.
  1. <?
  2. $how = mysql_result(mysql_query("SELECT COUNT(*) FROM tabela"), 0);
  3. ?>

B) czy konieczne jest użycie takiego kodu: "$this->data = $this->data->fetch_assoc();"
w tym stare funkcje bardziej mi się podobały, bo wystarczył taki kod, aby od razu mieć wszystkie dane w tablicy:
  1. <?
  2. $a = mysql_fetch_array(mysql_query("SELECT * FROM tabela WHERE `id`=1"));
  3. ?>

c) czy w tym kodzie powinienem oprócz tego przeprowadzić jakąś zmianę?

Ten post edytował marcinek37 28.08.2012, 09:28:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 08:06