2016-05-31 4 views
5

Ich habe eine Anwendung, die für meine PHP eine Variable (nomecardapioBD geht und die in der Variablen empfangen und aufgezeichnet: nomecardapioBD), die den Tabellennamen ist, den ich alle Zeilen und Spalten auswählen möchte .PHP, MY SQL-Fehlerabfrage

Aber um die Variable per Post erhalten kann nicht den Termin zu machen. Kann mir jemand sagen, was mit diesem Teil meines Codes nicht stimmt?

+2

Tabellen- und Spaltennamen können nicht durch Parameter in PDO ersetzt werden. – Saty

Antwort

2

Tabellen- und Spaltennamen können nicht durch Parameter in PDO ersetzt werden. Verwenden Sie es einfach als

$table=$_POST['nomecardapioBD']; 
$query = "Select * FROM $table"; 


//execute query 
try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute(); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error!"; 
    die(json_encode($response)); 
} 
+1

Es hat auch funktioniert, vielen Dank für echte –

+0

Sie sollten gewählt haben, um diese Frage zu schließen, anstatt eine unsichere Antwort zu veröffentlichen, die zu SQL-Injektion führt. –

3

Warum nicht das?

$query = "Select * FROM " . $_POST['nomecardapioBD']; 


//execute query 
try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute(); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error!"; 
    die(json_encode($response)); 
} 

// Finally, we can retrieve all of the found rows into an array using fetchAll 
$rows = $stmt->fetchAll(); 

Sie sollten jedoch auch eine Art von Eingangsbereinigung durchführen.

+1

Es hat funktioniert, vielen Dank für echte –

+0

Diese Antwort ist eine SQL-Injektion selbst. Ich frage mich, warum es so stark aufgewertet wurde. –

+0

@YourCommonSense Ich wollte keine Industriestandard-Lösung anbieten. Ich zeigte dem OP einen Weg, sein Problem zu lösen. Und ich machte die letzte Aussage, um ihn gegen die Gefahr vorzuschlagen. – hashbrown