php
2016-11-10 3 views 0 likes 
0

Da ist etwas mit meiner Frage, aber ich kann nicht finden, was.Wie Debuggen der Verkettung einer SQL-Abfrage in PHP?

$keys = array_keys($fields); 
    $values = array_values($fields); 

    $sql = "UPDATE " .$table. " SET " .implode("`, `", $keys) ."='".implode("', '", $values) . "' WHERE id={$id}"; 

Und es zeigt, wie: UPDATE users SET name, password'Rick is vets', 'sdfg' WHERE id=5

Aber es hat zu zeigen, wie: UPDATE users SET name = 'Rick is vets', password='sdfg' WHERE id=5

+0

Das liegt an der Art, wie Sie die Funktion 'implode()' verwenden. – Maximus2012

+1

das wird nie funktionieren, müssen Sie ein Array loopen, um den 'name = 'Wert'-String zu erstellen –

+0

In Ordnung, aber wie soll meine implode Funktion dann sein? –

Antwort

2
$setString=''; 

foreach($fields as $k=>$v){ 

$setString .=$k." = '".$v."', "; 

} 
$setString=rtrim($setString,', '); 

umfassen $setString in Abfrage

+2

* "jemanden brauchen, um einen Blick über meine Abfrage" * - Sie haben nie gesagt, es zu beheben ;-) –

+1

@ Fred-ii-ich brauche die billigen Punkte ;-) –

+0

Ok, habe dann 10 bei mir, wäre aber schöner, _de-complicate_ dass string concatenation – RiggsFolly

2

Versuchen Sie, durch die $fields Array Looping zu erstellen eine Aktualisierungszeichenfolge wie folgt:

$update_string=''; 

foreach ($fields as $key=>$value) 
{ 
    $update_string .= $key."='$value', "; 
} 

Dann das letzte Komma Zeichen aus der Zeichenfolge mit rtrim() Funktion:

$update_string = rtrim($update_string, ", "); 

dann Ihre Abfrage wird:

$sql = "UPDATE " .$table. " SET " .$update_string. " WHERE id={$id}"; 

Dies ist nur das Konzept erläutern, da der Code könnte immer noch offen für SQL-Injection-Angriffe, in diesem Fall sollten Sie vorbereitete Anweisung verwenden.

+0

Könnte nützlich sein, einfache Anführungszeichen um die Datenwerte zu setzen! – RiggsFolly

+0

@RiggsFolly Ja. Vielen Dank. Aktualisiert. – Maximus2012

+0

Hoffe, es macht Ihnen nichts aus, ich korrigierte und vereinfachte Ihren Code ein wenig – RiggsFolly

Verwandte Themen