2016-07-29 21 views
2

Nach langer Zeit Vermeidung von vorbereiteten Anweisungen Ich möchte meine Komfortzone verlassen und alle meine Seiten auf mysqli aktualisieren, aber es fällt mir wirklich schwer, Dinge zu erreichen, die vorher einfach schienen. ..SELECT * FROM und mysqli_fetch_array mit vorbereiteten Anweisungen

Anschluss

$conn = mysqli_connect($host, $user, $password, $database)or die(mysqli_error($conn)); 

Alle meine Abfrage auf diese Weise gebaut wurden:

$id = 1; 
$result = mysqli_query($conn, "SELECT * FROM users WHERE id = '$id'"); 
$row = mysqli_fetch_array($result); 

Dann habe ich alle benötigten Felder drucken konnten:

Name: $row['name']; 
Email: $row['email']; 
Address: $row['address']; 
City: $row['city']; 
... 

Ich habe prepare auf verschiedene Weise versucht, execute, bind und fetch die Ergebnisse auf einfache Art und Weise oder ähnlich zu dem, was ich gewohnt war, aber keiner von ihnen für mich arbeiten.

Meine Aussage ist so schlecht? Ich meine, wenn ich alle Itiens vor irgendwelchen Query oder Insert desinfiziere, bleibt meine Aussage unsicher?

Kann mir jemand ein Beispiel zeigen, wie kann ich vorbereitete Aussage verwenden, aber immer noch in der Lage, meine Ergebnisse einzeln zu drucken, wie: $ row ['name], $ row [' adresse '], $ row [' city ' ] ...

GERADE

Dieser Code richtig ist, meine Verbindung funktioniert, ein paar Dinge zu AKTUALISIEREN ok und die $ id ist über meine Frage (ich habe bearbeitet meine Frage) erklärt. Meine Frage ist, wie kann ich "verwandeln" diesen Code in ein MySQLi Prepared Statement und noch in der Lage sein, die Ergebnisse individuell wie $ row drucken [ 'name'], $ row [ 'Adresse'] ...

+0

Welche Fehler erhalten Sie? Können Sie eine Verbindung zur Datenbank herstellen? – Anshum

+0

@Anshum Ich bekomme keine Fehler, dieser Code funktioniert perfekt, ich habe meine Frage mit den fehlenden Informationen (Datenbank und ID-Deklaration) aktualisiert. Meine Frage ist, wie kann ich diesen Code in eine mysqli prepared-Anweisung transformieren und dennoch in der Lage sein, Ergebnisse einzeln zu drucken. – suicidebilly

Antwort

0
<?php 
$mysqli = new mysqli("localhost", "username", "password", "db_name"); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
$id =1; 
if ($stmt = $mysqli->prepare("SELECT name, email from users where id=?")) { 

    /* bind parameters for markers */ 
    $stmt->bind_param("d", $id); 

    /* execute query */ 
    $stmt->execute(); 

    $stmt->bind_result($name, $email); 

    /* fetch value */ 
    $stmt->fetch(); 

    printf("%s has email %s", $name, $email); 
    /* close statement */ 
    $stmt->close(); 
} 

?> 

Kann es helfen

+0

Ich habe meine Frage aktualisiert, der Code funktioniert einwandfrei. Meine Frage ist, wie diese Anweisung in eine mysqli prepared-Anweisung umgewandelt werden kann, um Injektionen zu verhindern und die Ausführung von Abfragen zu beschleunigen. – suicidebilly