webForumDet fria alternativet

SELECT WHERE xx LIKE($variabel) problem

6 svar · 225 visningar · startad av Faktor

FaktorMedlem sedan feb. 200135 inlägg
#1

Okej, jag har fått veta att det inte är så säkert att skriva såhär men iaf.

<OPTION name=p_ldesc value="WHERE hm_sender LIKE('%$opt_value%')">Speciell</OPTION>

Den fullständiga raden kommer att bli:

select * from helpmsg WHERE hm_sender LIKE('%$opt_value%')

byter man ut $opt_value mot en bokstav och kör raden i mySQL Query så fungerar det utmärkt. Dock inte om man kör det över webben.

Då får jag felmeddelandet: "Warning: Supplied argument is not a valid MySQL result resource in C:\Inetpub\wwwroot\php\list.php on line 33"

-------
31. <?php
32. $i = 0;
33. while($myrow = mysql_fetch_array($result)){
34. $aId[$i] = "".$myrow["0"];
35. $aSender[$i] = "".$myrow["1"];
36. $aSenderEmail[$i] = "".$myrow["2"];
37. $aLocation[$i] = "".$myrow["3"];
38. $aSenderDate[$i] = "".$myrow["4"];
39. $aSubject[$i] = "".$myrow["5"];
40. $aMessage[$i] = "".$myrow["6"];
------

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Då är det säkert något fel på den sql-sats som du skickar till mysql_query/mysql_db_query. Lägg in anrop till mysql_error efter detta anrop, t.ex.

$result = mysql_query ...
echo mysql_error();

------------------
essentitia preter non sans multiplicandum

FaktorMedlem sedan feb. 200135 inlägg
#3

Det resulerar i:

You have an error in your SQL syntax near '\'%$opt_value%\')' at line 1

jag vet inte var \ kom ifrån men sådana behöver man väl bara när man använder " och inte för '. Inte sant?

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Kan du lägga upp det kodavsnitt där selectsatsen finns?

------------------
essentitia preter non sans multiplicandum

FaktorMedlem sedan feb. 200135 inlägg
#5

Givetvis kan jag det ...

----
<?php
if ($submit)
{
$db = mysql_connect("localhost", "root");
mysql_select_db("ITEM",$db);
$result = mysql_query("SELECT * FROM helpmsg $opt_select",$db);
echo mysql_error();
?>
----

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Det verkar som om $opt_value aldrig evalueras. Du har alltså en variable som innehåller strängen

WHERE hm_sender LIKE('%$opt_value%')

om jag förstår det hela rätt. Nu så kan ju jag väldigt lite om PHP men behöver man inte göra eval på detta så att man får in värdet av $opt_value i strängen. Lite schematiskt

<?php
$opt_value= 'nisse';
$str = "WHERE hm_sender LIKE('%$opt_value%')";
eval ("\$str = \"$str\";");
$res = mysql_query("select * from helpmsg $str");
?>

Om du inte får ihop så kan du kan ställa frågan i PHP-forument i stället.

------------------
essentitia preter non sans multiplicandum

FaktorMedlem sedan feb. 200135 inlägg
#7

Du hade rätt, det var evalueringen som fattades. Det fungerar fint nu.
Tack så mycket för hjälpen!

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb