Autor Zpráva
ato3
Profil
Napsal jsem si tento skript a chci ho pouzit k vyhledavani v databazi, ale neustále mi to píše chybu. Poradíte mi prosím co s tím?

děkuji

Chybová hláška: 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 '%pokus% LIMIT '0 ,30'' at line 1

h=pokus

<?php

$slovo = $_GET['h'];
$connect = mysql_connect ( "****", "******", "******") or die(mysql_error() );
$db = mysql_select_db("tabulka") or die(mysql_error() );

if (isset($_GET['h'])) {
$hledat = "SELECT * FROM hledej WHERE title LIKE %$slovo% LIMIT '0 ,30'";

mysql_query ($hledat) or die (mysql_error());


while ($radek = mysql_fetch_array($vysledky)){
extract($radek);
echo "$title";
echo "$body";
}
}
?>
Pavel Strejček
Profil
%$slovo%

toto dej do apostrofů
Pavel Strejček
Profil
'%$slovo%'
ato3
Profil
Pavel Strejček
dal jsem to do apostrofů a vymazal LIMIT

teď to píše jinou chybu

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/apache/domains/hyps.cz/sablony.hyps.cz/hledej.php on line 44

... line 44 je tam jak je while
Pavel Strejček
Profil
BTW nejsou-li zapnuté magic_quotes hrozí útok hackerem přes SQL injection. Ta proměnná $slovo by měla být ošetřená pomocí mysql_real_escape_string().
ato3
Profil
Pavel Strejček
já se v tom až tolik nevyznám... ale pak bych ten formulář odesílal přes post... to by pomohlo?
.. ted jde ale spis o to jestli to vůbec rozchodim:-(
Pavel Strejček
Profil
tak tam ještě dopiš

$radek =

před mysql_query ($hledat)
Pavel Strejček
Profil
Přes post to nepomůže, zkontroluj si pomocí phpinfo(); jestli jsou zapnuté magic_quotes_gpc a pokud ne tak tam přidej $slovo = mysql_real_escape_string($_GET['h']);
ato3
Profil
Pavel Strejček
pořád to píše stejnou chybu.. připsal jsem to tam
Warning: mysql_fetch_array():.......

ještě nějaký nápad prosím? jinak díky za rady
nightfish
Profil
ato3
no, v cyklu while používáš proměnnou $vysledky, která by měla obsahovat výsledek dotazu, ale neobsahuje, neboť výsledek mysql_query do ní nepřiřazuješ...
Pavel Strejček
Profil
promiň, místo $radek tam mělo být $vysledky
ato3
Profil
Pavel Strejček
Warning: phpinfo() has been disabled for security reasons in /usr/local/apache/domains/hyps.cz/sablony.hyps.cz/hledej.php on line 50

takže phpinfo(); je asi zakázané

... jinak už to jde se zdá.. zkusím něco zadat do databáze, aby bylo možné něco vůbec vyhledat
Pavel Strejček
Profil
a co tohle

get_magic_quotes_gpc()
ato3
Profil
Pavel Strejček
$slovo = mysql_real_escape_string($_GET['h']);

když tam přidám tohle, tak to zase píše nějaké chyby

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user: 'apache@localhost' (Using password: NO) in /usr/local/apache/domains/hyps.cz/sablony.hyps.cz/hledej.php on line 34

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /usr/local/apache/domains/hyps.cz/sablony.hyps.cz/hledej.php on line 34

nepomohlo by, kdybych vymazal promennou $slovo a pouzil vzdy primo $_GET['h']?
ato3
Profil
Pavel Strejček
Už to fungujeee:-) děkuji za pomoc .. a co s tou promennou?

ani nevím jak poděkovat, byl jsem z toho už uplně mimo:-)
Pavel Strejček
Profil
musíš to tam dát až po připojení k mysql serveru
ato3
Profil
Pavel Strejček
ano, dal jsem to až po připojení k serveru a už je to v pořádku vše... vyhledává a nehlásí chyby:-)

ještě jednou děkuji
Toto téma je uzamčeno. Odpověď nelze zaslat.