Frage

Ich habe den folgenden Code:

function dbPublish($status)
{
 global $dbcon, $dbtable;

 if(isset($_GET['itemId']))
 {
  $sqlQuery = 'UPDATE ' . $dbtable . ' SET active = ? WHERE id = ?';
  $stmt = $dbcon->prepare($sqlQuery);
  $stmt->bind_param('ii', $status, $_GET['itemId']);
  $stmt->execute();
  $stmt->close();
 }
}

Muss ich in diesem Fall MySQL_REAL_ESCAPE_string oder in Ordnung?

War es hilfreich?

Lösung

Nein, Sie müssen sich nicht selbst entkommen (dh nein, du musst nicht anrufen mysqli_real_escape_string), wenn Sie vorbereitete Aussagen verwenden: Die DB -Motor wird dies selbst tun.

(Tatsächlich, wenn Sie angerufen haben mysql_real_escape_string Und wenn Sie gebundene Parameter verwenden, würden Ihre Saiten zweimal entkommen - was nicht großartig wäre: Sie würden überall mit den Charakteren entkommen ...)


Als Nebenbetreuung: Ihre Werte werden als Ganzzahlen übergeben (wie durch die angegeben 'ii'), Sie müssten also nicht anrufen mysql_real_escape_string, Selbst wenn Sie keine vorbereiteten Aussagen verwendet haben: Wie der Name schon sagt, wird diese Funktion verwendet, um zu entkommen ... Zeichenfolgen.

Für Ganzzahlen benutze ich im Allgemeinen nur nur intval Um sicherzustellen, dass die Daten, die ich in meine SQL -Abfragen injiziere, sind wirklich ganze Zahlen.

(Aber wenn Sie vorbereitete Abfragen verwenden, müssen Sie diese Art von selbst nicht selbst entkommen.)

Andere Tipps

Nein, du darfst nicht. Das Kombinieren der beiden würde zu sichtbaren Fluchtzeichen führen, die in Ihren Daten angezeigt werden.

function dbPublish($status)    
{    
 global $dbcon, $dbtable;    

 if(isset($_GET['itemId']))    
 {    
  $sqlQuery = 'UPDATE ' . $dbtable . ' SET active = ? WHERE id = ?';    
  $stmt = $dbcon->prepare($sqlQuery);    
  $stmt->bind_param('ii', $status, $_GET['itemId']);    
  $stmt->execute();    
  $stmt->close();    
 }    
}   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top