PHP OOP+MySQLi?

Tags:    php oop mysql mysqli

<< < 12 > >>
Hej.

Som nogle af jer nok så, så fik jeg nogle scripts af nogle meget venlige brugere her inde.

Som så således ud:
Fold kodeboks ind/udPHP kode 


Får dog denne fejl:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/specieslist/public_html/test/class_getuserinfo.php on line 16


Er lidt usikker på hvad jeg gør forkert, som sagt, så er OOP langtfra noget jeg er god til.

Jeg har lige lavet en apt-get update og apt-get upgrade på mit system.

Hvad gør jeg forkert?

Mvh. Danni.



17 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 24 karma
Sorter efter stemmer Sorter efter dato
Du mangler $ på linje 16.



du har glemt et $ ja
der ud over er jeg ikke sikker på du kan kalde din klasse list, da der er en php-function som hedder det i forvejen



Indlæg senest redigeret d. 27.11.2011 15:27 af Bruger #3427
du har glemt dit $db


$id = $db->mysqli_real_escape_string($id);





Indlæg senest redigeret d. 27.11.2011 16:57 af Bruger #3427
Nu kommer jeg med et fuldkommen radikalt forslag. Noget som aldrig er prøvet før...

Er i klar?

Her kommer det...

Har i prøvet at kigge i dokumentationen: http://php.net/manual/en/book.mysqli.php

;)



Jeg vil i princippet mene det er bedre at OOP funktion sørger for, at gøre variablen valid eller fejler, hvis den ikke er det.

Gør du det ekternt ender du jo med i teorien tusinde steder, hvor der står

$val = clean($val);
$val2 = clean($val2);
$object->method($val, $val2);

i stedet for bare:
$object->method($val, $val2);

Og samtlige steder, hvor du glemmer at clean variablerne har du SQL injection risiko. Der er sikkert et fornuftigt modargument mod disse påstande.

Det jeg sagde om at rykke SQL'en ind i metoden gik dog ikke på selve variablen men på hele sql'en:
print $db::getuserinfo("SELECT * FROM users WHERE id='". mysql_real_escape_string($id) ."'");

Hvor din løsning godt nok tillader dig at skrive variable queries, kræver det samtidig også en viden over alt om database tabellerne. Og hvis du nogensinde retter bare lidt i den kan du have mange fejlsteder





linje 29 blev :: erstattet med ->
linje 16 fik et $ foran result

Jeg får så denne fejl, og nu er jeg virkelig på herrens mark..

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'specieslist'@'localhost' (using password: NO) in /home/public_html/test/class_getuserinfo.php on line 29

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/public_html/test/class_getuserinfo.php on line 29

Fatal error: Call to undefined method mysqli_result::mysql_fetch_array() in /home/public_html/test/class_getuserinfo.php on line 16

ordet list som class, bliver dog ikke brugt, den hedder noget helt 2, har dog ændret det for ikke at røbe for meget at sidens info :)



Indlæg senest redigeret d. 27.11.2011 16:15 af Bruger #15611
ser ud til du bruger: mysql_real_escape_string og ikke mysqli_real_escape_string
og det samme med din fetch.



Indlæg senest redigeret d. 27.11.2011 16:26 af Bruger #3427
Aha, jamen, så blev jeg det klogere :)

Så mysqli_fetch_array og mysqli_real_escape_string ?



nu har jeg ik brugt mysqli så meget, men vil jeg mene ja.



Hejsa.

Nå, nu smider jeg koden her ud engang mere, med et nyt problem....

Fold kodeboks ind/udPHP kode 


Fejlen lyder sådan her:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/specieslist/public_html/test/class_getuserinfo.php on line 29

Uforventet T_OBJECT_OPERATOR?



<< < 12 > >>
t