Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z mysql_real_escape_string
Forum PHP.pl > Forum > Przedszkole
sq6aah
Witam,
dlaczego funkacja mysql_real_escape_string
  1. $tresc=mysql_real_escape_string($tresc);

Zwraca błąd: Warning: mysql_real_escape_string() expects parameter 2 to be resource, object given in Warning: mysql_real_escape_string() expects parameter 2 to be resource, object given in
Z góry dziękuje za pomoc.
rafalp
Za drugi parametr tej funkcji musisz dać link do połączenia z bazą danych.

  1. $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
sq6aah
  1. $tresc=mysql_real_escape_string($tresc, $bd_lacz);
  2. $sql= "insert into poczta (
  3. `id` ,
  4. `nadawca` ,
  5. `odbiorca` ,
  6. `tytul` ,
  7. `tresc` ,
  8. `data`
  9. )
  10. values ('', '$login', '$odbiorca', '$temat','$tresc', '$data')";
  11. $wynik=$bd_lacz->query($sql);


To samo.. A połączenie z bazą jest prawidłowe.
bemol
  1. $sql= "insert into poczta (
  2. `id` ,
  3. `nadawca` ,
  4. `odbiorca` ,
  5. `tytul` ,
  6. `tresc` ,
  7. `data`
  8. )
  9. values ('', '$login', '$odbiorca', '$temat','$tresc', '$data')";
  10. $wynik=$bd_lacz->query($sql);
  11. $tresc=mysql_real_escape_string($tresc, $wynik);
rafalp
W przypadku używania klasy odpowiedzialnej za bazę, Twoje $bd_lacz to nie będzie "linkiem".
W moim frameworku analogicznie w modelu mam DB->query(..) i "DB" na pewno nie jest linkiem połączenia z bazą, ten "link" znajduje sie w samej klasie DB, więc musisz dopisać klasę do Twojej $bd_lacz która będzie odpowiedzialna za to co robi mysql_real_escape_string - bo dopiero w tej klasie będziesz w stanie uzyskać link żeby go zastosować w tej funkcji.

@bemol - bzdury.
sq6aah
A nie?
  1. $tresc=mysql_real_escape_string($tresc, $bd_lacz);


Ale i tak nie pomaga.
bemol
a sprawdź nie używając klasy i będziesz wiedział, gdzie masz błąd.
sq6aah
Normalnie działa. Ale czy nie można przez klase?
bemol
Jeśli nie masz takiego linku to raczej nie.
Sprawdź, czy przed funkcją mysql_real_escape_string zamykasz połączenie.
Jeśli nie, to według manuala:
Kod
If link_identifier  isn't defined, the last MySQL connection is used.

Więc wychodzi na to, że bierze ostatnio używane połączenie, jeśli nie jest zdefiniowane...
sq6aah
Albo otworzyć dwa połączenia, jedno poprzez klase a drugie normalnie. Tylko to pewnie obniży wydajność.
Szkoda że mysql_real_escape_string() nie działa przy mysqli_connect(), ponieważ osobiście wolę ten sposób.
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.