Hej, jag har en if-sats där olika typer av SQL-strängar byggs. Efter denna if-sats vill jag köra den SQL-sträng som blev utvald.
Såhär ser t.ex. en SQL-sträng ut:
$SQL = 'SELECT * FROM movies WHERE movieTitle Like '%"" .$_POST['searchvalue']. ""%' ORDER BY movieTitle LIMIT';
Och såhär ser SQL-satsen ut:
$results = mysql_query("". $SQL . "" . $from_records . "," . $max_per_page);
Jag har förmodligen något fel här, för när jag ska loopa igenom alla poster med:
while ($r = mysql_fetch_array($results))
Så får jag detta felmeddelande:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\appserv\www\movies\listmovies.php on line 303
Och rad 303 är just:
while ($r = mysql_fetch_array($results))
Någon som kan se felet?
MvH //
Henrik
@ndersMedlem sedan juni 200032 969 inlägg 1:
$SQL = "SELECT * FROM movies WHERE movieTitle Like '%" .$_POST['searchvalue']. "%' ORDER BY movieTitle LIMIT 1";
2: Varför konkatenerar du tom sträng före och efter SQL-frågan i mysql_query()?
3: Tänk på SQL injection.
(om du har med LIMIT i SQL-frågan måste du ju också ha med ett antal. det är väl en av orsakerna till att det inte fungerar.)
edit: nu har jag läst ditt konkateneringskladd en gång till, och ser att antalet till limit nog hakar på i $from_records, så då kan du ju kanske bortse från mitt parentestillägg.
MatteMedlem sedan aug. 20002 975 inlägg Fast du bör nog lägga till ett mellanslag mellan LIMIT och värdet.
aasahMedlem sedan mars 20034 471 inlägg Jag tycker det verkar som om dina %-tecken hamnar utanför strängen? Dessutom stänger du strängen felaktigt eftersom du använder ' ytterst också, vilket gör att SQL:s startsträng fungerar som stoppsträng för SQL-frågan. Byt till " ytterst. Notera också inskjutna mellanslag: efter LIMIT och , i nedre satsen.
$SQL = "SELECT * FROM movies WHERE movieTitle Like '%".$_POST['searchvalue']."%' ORDER BY movieTitle LIMIT ";
$results = mysql_query($SQL .$from_records.", ".$max_per_page);