Triviales Problem mit String?

pekudel

Grünschnabel
Hallo!

Ich stehe gerade "auf der Leitung" bzw. komme nicht weiter. Und zwar versuche ich folgende Mysql-Abfrage zu tätigen:

PHP:
$str = "C4193A,C4198A";
$this->mysql->query("SELECT * FROM shop_items WHERE oemnr IN($str)")

Es kommt immer folgender Fehler:
Unknown column 'C4193A' in 'where clause'



Wenn ich allerdings nur Zahlen in der IN-Anweisung verwende, funktioniert das ganze.
Die Variable $str kann einen oder mehrere Werte haben.


Könnt ihr mir weiterhelfen?
Vielen Dank!
 
Hi

Damit die Werte als Werte statt Spaltennamen genommen werden
müssen sie in der SQL-Anweisung in Anführungszeichen stehen.
SQL:
IN('C4193A','C4198A')
in PHP also
PHP:
$str = "'C4193A','C4198A'";
 
Zuletzt bearbeitet von einem Moderator:
Danke für deine Antwort. Ich kenne auf die schnelle keine Funktion die mir automatisch vor und nach jedem Suchbegriff Quotes einfügt. Wir könnte ich das am besten umsetzen****
 
Explode (mit , als Begrenzung),
in einer Schleife bei jedem Element die Anführungszeichen dazu,
dann wieder implode.
 
Wenn es für jedes Problem eine Fkt. gäbe, würde Programmieren ja nicht mehr Spaß machen ;)

Von daher, selber zusammenbasteln.
sheel hat gesagt.:
Explode (mit , als Begrenzung),
in einer Schleife bei jedem Element die Anführungszeichen dazu,
dann wieder implode.
Wollte ich auch zuerst, aber reguläre Ausdrücke scheinen da viel einfacher und mächtiger zu sein:
PHP:
<?php
 
$str = 'C4193A,C4198A'; 
$regex = '/([a-zA-Z0-9]+)/u';
 
echo preg_replace($regex, "'\$0'", $str);
Live-Bsp. auf Ideone.com
 
Zurück