24. august 2006 - 09:56Der er
15 kommentarer og 1 løsning
mySql id=Array
Hej Jeg har fundet dette script på nettet, men jeg kan ikke få det til at virke ordenligt. Er der nogle der har en idé hvorfor.
I scriptet jeg fandt var det ikke id'et man SELECT efter(altså ikke tal værdier i arrayet) men er det ikke lige meget?
<?php
$db=mysql_connect("localhost", "root", "heyhey"); mysql_select_db("heyhey", $db); $forbudteordarray = array('21','24','25'); /*her flader vi arrayet ovenover ud, og laver den om til noget som kan bruges i en MySQL forespørgsel*/ $flad = " %" . implode("% OR %", $forbudteordarray) . "% "; /*ovenstående skulle tilføje % i hver ende af hvert ord og OR in mellem hver af ordene.*/ echo $flad."<br>"; //forespørgsel med vores flade array $query = mysql_query("SELECT * FROM firmaer WHERE id= '$flad'") or die (mysql_error());
//echo $query; while($row = mysql_fetch_array($query)) { //vis hvad der skal vises echo $row['Navn']."d<br>"; //...osv } ?>
Tja, den laver i hvert fald en ulovlig SQL-sætning. Det er jo nok grunden. :^)
Jeg undre mig lidt over hvad variablen $forbudteordarray handler om? Navnet på den virker lidt som om at det slet ikke har noget at gøre med sammenhængen ... som om at det er to løsninger på forskellige typer af problemer som er blevet blandet sammen?
$forbudteordarray = array('21','24','25'); $query = mysql_query("SELECT * FROM firmaer WHERE id IN (" . implode(",", $forbudteordarray) . ")") or die (mysql_error());
while ($row = mysql_fetch_array($query)) { //vis hvad der skal vises echo $row['Navn']."d<br>"; //...osv } ?>
hvis man gerne vil have mere med i sql søgningen - skriver man det så dådan her? $query = mysql_query("SELECT * FROM firmaer WHERE id IN (" . implode(",", $forbudteordarray) . ")AND Navn='$butik' ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
Hvis man bruger $REQUEST så ved man i realiteten ikke om idndata kommer fra en form eller som en del at et url. Dermed åbnere man endnu en mulig angrebs-vej for en eventuel hacker.
Hvis du ved præcist at dine inddata kommer fra at nogen klikker på et link, så er der ingen som helst grund til at åbne for at programmet også ville tage imod data som submittes via en form.
Ja, din SQL ser rigtig ud. Hvorfor? Kan du da ikke få den til at virke?
$butik="Fona"; $offset = (isset($_GET['offset'])) ? $_GET['offset'] :0; // Hvis ikke $offset er sat, sættes den til 0 $pr_side = 3; // Antal resultater pr. side // Henter poster fra databasen //$query = mysql_query("SELECT * FROM firmaer ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error()); $query = mysql_query("SELECT * FROM firmaer WHERE id IN (" . implode(",", $forbudteordarray) . ") AND Navn='$butik' ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
Hej igen, Jeg tænkte på hvis man gerne ville have at den IKKE tog Array med hvad hedder det så ? Dette virker nemlig ikke. :(
$query = mysql_query("SELECT * FROM firmaer WHERE id != IN (" . implode(",", $forbudteordarray) . ") AND Navn='$butik' ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.