ugrás a tartalomhoz

PHP - MySQL lekérdezés, szintaktikai hiba

fledgling42 · 2010. Május. 30. (V), 20.05
Sziasztok!

Nemrég kezdtem el foglalkozni a MySQL adatbázisokkal. Jelenleg ott tartok, hogy PHP-val feltöltöttem az adatbázist egy txt fájlból, de keresni már nem tudok benne.

Csináltam egy oldalt, ezen keresztül folyna a keresés (http://fledgling.hostoi.com/iskola/kereses.php). Maga a lekérdezés így néz ki:

$result = mysql_query(
"
SELECT * FROM adatok
WHERE bibl LIKE '%$_GET[bibl]%'
AND megjelenes LIKE '%$_GET[megjelenes]%'
AND ann LIKE '%$_GET[ann]%'
AND szleng LIKE '%$_GET[szleng]%'
AND kozl LIKE '%$_GET[kozl]%'
");

if (! mysql_query($result,$con))
{
die('Error: ' . mysql_error());
}

        // itt van a hiba, itt áll meg szerintem

echo "<table border='1'>
<tr>
<th>Megjelenés éve</th>
<th>Biblográfiai leírás</th>
<th>Annotáció</th>
<th>Szleng típusa</th>
<th>Közlemény típusa</th>
</tr>";

while($row = mysql_fetch_array($result))
 {
 echo "<tr>";
 echo "<td>" . $row['bibl'] . "</td>";
 echo "<td>" . $row['megjelenes'] . "</td>";
 echo "<td>" . $row['ann'] . "</td>";
 echo "<td>" . $row['szleng'] . "</td>";
 echo "<td>" . $row['kozl'] . "</td>";
 echo "</tr>";
 }
echo "</table>";


És ezt a hibát dobja ki: Error: 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 'Resource id #6' at line 1

Minden segítséget nagyra értékelnék!
 
1

Több sebből vérzik

Poetro · 2010. Május. 30. (V), 20.24
Előbb takarítsd ki a $_GET[] cuccokat a lekérdezésedből, mert az semmiképpen sem oda való. Azután csak akkor add hozzá a feltételeket a lekérdezéshez ha van mit behelyettesíteni a feltételekbe. A paramétereket megfelelően escapeld (mysql_real_escape_string). Valamint nézd meg a LIKE szintaxisát, valamint annak is az escapelését.
2

$_GET[valami] helyett $_GET['valami']

solkprog · 2010. Május. 30. (V), 20.40
Poetro hozzászólását annyival egészíteném ki hogy a $_GET[valami] helyett $_GET['valami'] formát használj. PHP dokumentációban elolvashatod hogy miért tanácsoltam.
3

kód

Lohan · 2010. Május. 30. (V), 21.36
ezt rakd be:
$query = "SELECT * FROM adatok WHERE "
        ."bibl LIKE '%".mysql_real_escape_string($_GET['bibl'])."%' AND "
        ."megjelenes LIKE '%".mysql_real_escape_string($_GET['megjelenes'])."%' AND "
        ."ann LIKE '%".mysql_real_escape_string($_GET['ann'])."%'" AND "
        ."szleng LIKE '%".mysql_real_escape_string($_GET['szleng']."%' AND "
        ."kozl LIKE '%".mysql_real_escape_string($_GET['kozl'])."%'";
$result = mysql_query($query);

amelyik része ködös annak érdeklődj utána(közhely: góglban).
4

Köszönöm

fledgling42 · 2010. Jún. 2. (Sze), 18.49
Sziasztok,

köszönöm a gyors válaszokat. Akkor viszont, ha jól értelmezem, ha számot akarok átadni akkor marad a $_GET[szam]?

Illetve, ebben a ($_GET['bibl']) stringben mit kell levédeni? Nincs benne perjel vagy ilyesmi, sima hozzáfűzéssel nem működne? Vagy a ' karakter miatt kell?

Aztán kipróbáltam Lohan változatát, de sztem két szintaktikai is van benne: a 4. sorban van egy plusz " (hibát is dob a fordító), de ha ezt kitörlöm, akkor is ezt írja ki:

Parse error: syntax error, unexpected ';' in /home/a2116591/public_html/iskola/keres.php on line 22

Erre a kódra:

$query = "SELECT * FROM adatok WHERE " //17. sor
        ."bibl LIKE '%".mysql_real_escape_string($_GET['bibl'])."%' AND "
        ."megjelenes LIKE '%".mysql_real_escape_string($_GET['megjelenes'])."%' AND "
        ."ann LIKE '%".mysql_real_escape_string($_GET['ann'])."%' AND "
        ."szleng LIKE '%".mysql_real_escape_string($_GET['szleng']."%' AND "
        ."kozl LIKE '%".mysql_real_escape_string($_GET['kozl'])."%'";
$result = mysql_query($query,$con);
5

Zárójel

Poetro · 2010. Jún. 2. (Sze), 18.57
Hiányzik a zárójel a szleng után.
Talán így jobban áttekinthető:
<?php
$query = "SELECT * FROM adatok WHERE " .
         "bibl LIKE '%" . mysql_real_escape_string($_GET['bibl']) . "%' AND " .
         "megjelenes LIKE '%" . mysql_real_escape_string($_GET['megjelenes']) . "%' AND " .
         "ann LIKE '%" . mysql_real_escape_string($_GET['ann']) . "%' AND " .
         "szleng LIKE '%" . mysql_real_escape_string($_GET['szleng']) . "%' AND " .
         "kozl LIKE '%" . mysql_real_escape_string($_GET['kozl']) . "%'";
?>
6

Puff

fledgling42 · 2010. Jún. 2. (Sze), 22.12
Pedig nézegettem egy jó darabig, de csak nem vettem észre... Köszi!