Ist es möglich die Implode() Funktion in einem Query zu verwenden?

Karlito1

Mitglied
ich versuche auch hier die Funktion implode zu verwenden, indem ich schon alle Tricks mit ' ' und " " verwendet habe damit die Ergebnisse in nodeIdSource und nodeIdDestination so ('K' 'I' 'J' 'L'); aussehen. Aber erfolgslos. Ich würde mich freuen auf Ideen. Danke

error reports und Versuche:

$nodeList = array ('K', 'I', 'J', 'L');
$test = implode("' '", $nodeList);
echo $test; // K' 'I' 'J' 'L

und

< ?php
$nodeList = array ('K', 'I', 'J', 'L');
$test = implode(' "' '" ', $nodeList);
echo $test;
?>

Parse error: syntax error, unexpected ''" '' (T_CONSTANT_ENCAPSED_STRING) in

PHP:
$node = Array ('K', 'I', 'J', 'L');

$queryTwo = "SELECT *
                      FROM kanten
                      WHERE     nodeIdSource IN (implode(" ", $nodeList))
                           OR        nodeIdDestination IN (implode(" ", $nodeList)";
 
Bei wenig Daten kannst du mit FIND_IN_SET() arbeiten.
SQL:
WHERE FIND_IN_SET(nodeIdSource, 'K,I,J,L')
-- Also umgesetzt
WHERE FIND_IN_SET(nodeIdSource, '. implode(',', $nodeList .')

Ansosten halt etwa so
PHP:
function quoteString($item){
   return "'{$item}'";
}

$nodeList = array ('K', 'I', 'J', 'L');
$sqlNodeList = implode(',', array_map('quoteString', $nodeList));
$queryTwo = "... WHERE nodeIdSource IN ({$sqlNodeList }) OR ..";
Oder mit create_function
PHP:
$nodeList = array ('K', 'I', 'J', 'L');
$sqlNodeList = implode(',', array_map(create_function('$item', 'return "\'$item\'";'), $nodeList));
$queryTwo = "... WHERE nodeIdSource IN ({$sqlNodeList }) OR ..";
 
Bei wenig Daten kannst du mit FIND_IN_SET() arbeiten.
SQL:
WHERE FIND_IN_SET(nodeIdSource, 'K,I,J,L')
-- Also umgesetzt
WHERE FIND_IN_SET(nodeIdSource, '. implode(',', $nodeList .')

Ansosten halt etwa so
PHP:
function quoteString($item){
   return "'{$item}'";
}

$nodeList = array ('K', 'I', 'J', 'L');
$sqlNodeList = implode(',', array_map('quoteString', $nodeList));
$queryTwo = "... WHERE nodeIdSource IN ({$sqlNodeList }) OR ..";
Oder mit create_function
PHP:
$nodeList = array ('K', 'I', 'J', 'L');
$sqlNodeList = implode(',', array_map(create_function('$item', 'return "\'$item\'";'), $nodeList));
$queryTwo = "... WHERE nodeIdSource IN ({$sqlNodeList }) OR ..";

Danke für deine Antwort

ich hatte diese Alternativ gemacht
PHP:
foreach($nodeList as $node){
 $x = " '$node' " ;
 //echo $x;
}
$queryTwo = "SELECT *
       FROM kanten
       WHERE     nodeIdSource IN ($x)
       OR        nodeIdDestination IN ($x)";*/
und funktioniert
und wenn ich deine function quoteString verwende erhalte ich folgendes
Fatal error: Cannot redeclare quoteString() (previously declared in
 
Hey Yalaw,
ich wollte kein neues Thema erstellen denn die Frage ist fast gleich ... also bitte können sie mir helfen.

hier ist mein code
PHP:
 $color = "white";
 $nodeList = array ('K', 'I', 'J', 'L', 'M', 'X', 'Z');
 foreach($nodeList as $key){
 echo "{key: " .$key. ','.'&nbsp;&nbsp;&nbsp;' ."color: " .$color. "}<br>";
 }
 //$nodeList1 = ('".implode("','", $nodeList)."');

und Output


{key: K, color: white}
{key: I, color: white}
{key: J, color: white}
{key: L, color: white}
{key: M, color: white}
{key: X, color: white}
{key: Z, color: white}


ABER ich will es so

{ key: "I", color: "white" },
{ key: "J", color: "white" },
{ key: "K", color: "white" },
{ key: "L", color: "white" },
{ key: "M", color: "white" },
{ key: "X", color: "white" },
{ key: "Z", color: "white" }

DANKE
 
Mal Beispiele wie man ein " in den Text setzen kann
PHP:
echo "\"";
echo '"';
echo "&quot;";
echo '&quot;';

Unterscheid der Begrenzungszeichen
"..." Der Inhalt wird geparst. Also Variablen innerhalb des Strings werden übersetzt
'...' Der Inhalt wird nicht geparst.

Ich persönlich würde jetzt das so umsetzen. Ist Geschmacksache
PHP:
echo "{key: \"{$key}\",&nbsp;&nbsp;&nbsp;color: \"{$color}\"}<br>";
Ich mag das Stringzusammensetzen mit dem Punkt nicht besonders. Die {} könnte man auch weglassen.
Aber die Complex (Curly) Syntax ist einfach übersichtlicher und mächtiger.

Ich hatte vor einiger Zeit mal das dazu geschrieben
Nicht nur bessere Ansicht. Probiere mal den folgenden Code und du wirst verstehen
PHP:
$foo = 'foo';
echo "Hallo $foobar<br />";
echo "Hallo {$foo}bar<br />";
Zudem kann innerhalb von {} direkt auf Array-Elemente oder Objekt-Properties zugegriffen werden
PHP:
$array = array('id_0'=>'foo', 'id_1'=>'bar');
$object = (object) $array;
echo "Hallo {$array['id_0']}{$object->id_1}<br />";
//geht sogar mit " anstelle von ' für den Indexname
echo "Hallo {$array["id_0"]}{$object->id_1}<br />";
//und somit kann der Index des Arrays wieder aus einem zusammengesetzten String bestehen
$id = 0;
echo "Hallo {$array["id_{$id}"]}{$object->id_1}<br />";
Und wenn man sich die {} einfach angewöhnt (den falsch sind sie nie), muss man sich keine Gedanken mehr machen, damit solche Fehler wie im ersten Beispiel passieren.
Zudem ists mMn besser lesbar, aber das ist Geschmacksachse
 
Mal Beispiele wie man ein " in den Text setzen kann
PHP:
echo "\"";
echo '"';
echo "&quot;";
echo '&quot;';

Unterscheid der Begrenzungszeichen
"..." Der Inhalt wird geparst. Also Variablen innerhalb des Strings werden übersetzt
'...' Der Inhalt wird nicht geparst.

Ich persönlich würde jetzt das so umsetzen. Ist Geschmacksache
PHP:
echo "{key: \"{$key}\",&nbsp;&nbsp;&nbsp;color: \"{$color}\"}<br>";
Ich mag das Stringzusammensetzen mit dem Punkt nicht besonders. Die {} könnte man auch weglassen.
Aber die Complex (Curly) Syntax ist einfach übersichtlicher und mächtiger.

Ich hatte vor einiger Zeit mal das dazu geschrieben

danke für die weitere Erklärung und es funktioniert.
hier ist was ich gemacht hatte
PHP:
echo "{key: \"".$v."\",&nbsp;&nbsp;&nbsp; color: \"".$color."\"},<br>";
(funktioniert auch, aber ich finde Ihre Lösung effektiver) Also jetzt will ich das letzte Komma weg. Danke noch mal

{key: "K", color: "white"},
{key: "I", color: "white"},
{key: "J", color: "white"},
{key: "L", color: "white"},
{key: "M", color: "white"},
{key: "X", color: "white"},
{key: "Z", color: "white"},
 
Zurück