Błąd ze strony mysql przy dodawaniu rekordu do bazy danych

Witam,

Podczas robienia prostego skryptu trafił mi się błąd z którym nigdy wcześniej nie miałem do czynienia.

Oto on:

“Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /usr/home/xixardas/domains/moc.muzyki.ct8.pl/public_html/podglad.php on line 116 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘like (od, dla) values(‘xixardas’,‘Shelerini’)’ at line 1”

Wiecie może o co chodzi?

Jakby co tutaj jest ten prosty kod w którym zrobiłem najprawdopodobniej błąd.

$profil_osoby = $_REQUEST['nick'];

$dane_osoby = mysql_fetch_array(mysql_query("select * from users where nazwa='$profil_osoby'"));

$osoby_nick = $dane_osoby['nick'];



$spr_da = mysql_fetch_array(mysql_query("select * from users where nick='$nick'"));

$nazwa_da = $spr_da["nazwa"];

$spr_like = mysql_fetch_array(mysql_query("select COUNT (*) from like where like='1' od='$nazwa_da' AND dla='$profil_osoby' LIMIT 1"));

if ($spr_like[0] >= 1) {

$komunikaty .= "Nie możesz dodać kilku like dla jednej osoby.
";}

if (!$komunikaty) {

$dodawajka = mysql_query("insert into like (od, dla) values('$nazwa_da','$profil_osoby')");

xixardas , zapoznaj się, proszę, z tym tematem, a następnie - korzystając z przycisku zmien.gif

Pozdrawiam,

Dimatheus

To zapytanie:

select COUNT (*) from like where like='1' od='$nazwa_da' AND dla='$profil_osoby' LIMIT 1"

Masz błędne. Poprawnie:

select COUNT (*) from like where like='1' AND od='$nazwa_da' AND dla='$profil_osoby' LIMIT 1"

Popraw i zobaczymy co będzie dalej.

Dalej lipa.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /usr/home/xixardas/domains/moc.muzyki.ct8.pl/public_html/podglad.php on line 116 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘like (od, dla) values(‘xixardas’,‘Shelerini’)’ at line 1

Dodane 21.08.2013 (Śr) 15:03

jakby co wywalam te błędy przez

echo mysql_error()

Dodane 21.08.2013 (Śr) 15:17

Wszędzie gdzie w zapytaniu sql było słowo like zamieniłem je na like i teraz został mi już błąd tylko

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /usr/home/xixardas/domains/moc.muzyki.ct8.pl/public_html/podglad.php on line 116

Patrząc na linijki jest to ten kod.

$spr_like = mysql_fetch_array(mysql_query(“select COUNT (*) from like where like=‘1’ AND od=’$nazwa_da’ AND dla=’$profil_osoby’ LIMIT 1”));

Inaczej to jednak wytłumaczę.

Warning zwraca bardzo dobrą (jak na php) informację o przyczynie błędu. Oznacza on, że argument podany do funkcji powinien być resourcem, którego zwraca mysql_query(). mysql_query() zwraca resource, gdy zapytanie się powiedzie lub zwraca FALSE, gdy się nie powiedzie. FALSE jest boolem. Dlatego oczywiste jest, że zapytanie się nie powiodło. A dlaczego się nie powiodło? Ano dlatego, że między count a nawiasem dałeś spację.

Wszystko to sam byś wiedział, gdybyś spróbował czytać co do ciebie pisze php…

Dziękuje taki mały błąd a takie znaczenie :slight_smile:

Temat rozwiązany.