2017-08-04 5 views
1

Ich habe ein Problem, dass ich Som Eingabe möchte. Ich habe eine Liste erstellt, in der alle meine Benutzer in einem kleinen Projekt aufgelistet sind. Auf dieser Liste habe ich einen Link zu jedem bestehenden Benutzer, so dass Benutzer sich gegenseitig besuchen können.Wie mache ich richtig einen Link zu einem anderen Benutzer in PHP

der Link sieht so aus.

Diese Links funktioniert irgendwie. Auf der anderen Seite beginnt das Problem. Wenn ich auf die Benutzerprofilseite komme, die ich besuchen möchte, benutze ich diesen Code, um Benutzerinformationen aus der Datenbank zu finden.

<?php 
$userId = $_GET['id']; 
$sql = "SELECT * FROM students WHERE id = " . intval($userId); 

$stmt = $dbh->prepare($sql); 

$stmt->execute(); 
?> 

Das funktioniert auch, aber ich habe gelernt, dass dies nicht gute Form ist. deshalb habe ich versucht, mit

//$sql = "SELECT * FROM students WHERE id = id"; 

die dann alle Benutzer zeigt und alle ihre Präsentationen und Bilder auf der jeweils anderen, auf der gleichen Seite. Also wieder, wie zeige ich eine andere Benutzer Präsentation richtig. Auch ich benutze PDO nicht MySQLI, wenn das helfen kann.

+2

Lesen Sie über [vorbereitete Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) im Handbuch. In diesem speziellen Fall ist Ihr Code jedoch sicher, da Sie den Wert als Ganzzahl ausgeben. Aber ja, es ist besser Prepared Statements zu verwenden und konsistent zu verwenden. –

+0

Sie bekommen ID in einer anderen Seite überprüfen Sie es – Bhargav

+0

@Bhargav wenn ich nicht fragen, ich nicht lernen. Kannst du mir das im 11 erklären? : P – Robert

Antwort

0

Sie waren in der Nähe mit

$sql = "SELECT * FROM students WHERE id = id"; 

Um eine vorbereitete Abfrage mit PDO zu verwenden, können Sie dies auf zwei Arten in einem ändern, Positions- oder benannten Platzhalter.

Positional:

$sql = "SELECT * FROM students WHERE id = ?"; 

Named:

$sql = "SELECT * FROM students WHERE id = :id"; 

Führen Sie die "Vorbereitung", dann fügen Sie den Wert in der Anweisung ausführen:

$stmt->execute([$userId]); // for positional 
$stmt->execute(['id' => $userId]); // for named 

(The only proper) PDO tutorial war eine große Hilfe mich mit PDO auf den neuesten Stand bringen.

Verwandte Themen