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:
<? include('db.php'); $db = new mysqli($dbHost, $dbLogin, $dbPasswd, $dbName); if(mysqli_connect_errno() > 0) { throw new Exception('Przerwa techniczna');} else { $db->query('SET NAMES \'utf8\''); } ?>
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ę:
<? function check_sql($code, $db){ } ?>
// 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ć)
<? $id = (int)$_GET['id']; $query = 'SELECT * FROM _mps_info WHERE id='.$id; $this->data = $db->query($query); else{ $this->data = $this->data->fetch_assoc(); } ?>
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.
<? ?>
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:
<? ?>
c) czy w tym kodzie powinienem oprócz tego przeprowadzić jakąś zmianę?