2016-08-03 8 views
0

Wenn ich einen Benutzer registriere ich füge sie zu einer Datenbank hinzu und sie erhalten eine ID, die automatisch von auto_increment generiert wird. Jetzt versuche ich, diese ID zu einer Sitzungsvariablen hinzuzufügen, damit ich sie auf anderen Seiten der Website verwenden und ihre Zeile in der Datenbank bearbeiten kann. Das habe ich bisher.php mysql - Benutzer-ID zur Sitzungsvariablen hinzufügen

Diese Zeile fügt die Formulareingaben an die DB, wenn der Benutzer registriert:

$insert = mysql_query("INSERT INTO users (`email`, `password`) VALUES ('example','values'))"); 

Dann Ich versuche, die user_id in eine Variable zu erhalten, die ich auf anderen Seiten der Website nutzen können. Ich versuche dies:

if ($insert) { 
    $select_id = mysql_query("SELECT `id` from `users` WHERE `email` = '$form_input'"); 
    $id_arr = mysql_fetch_array($select_id); 
    $id_var = $id_arr['id']; 
    session_start(); 
    $_SESSION["Register"] = $id_var[0]; 
} 

Aber es funktioniert nicht so versuche ich, einen var_export zu sehen, was in $ id_var ist und ich einen Wert von ‚3‘ erhalten, die nicht die user_id überein, die angeblich in der Variablen gespeichert werden.

+0

** Stopp ** mit veralteten 'mysql_ *' API. Verwenden Sie 'mysqli_ *' oder 'PDO' mit vorbereiteten Anweisungen – Jens

+0

Ich denke $ id_var [0] zeigt nirgends. – CanB

Antwort

1

Sie müssen das Ergebnis auf iterieren den Wert von id

$id=""; 
while ($row = mysql_fetch_array($select_id)) 
{  
    $id= $row ['id']; 
} 
if($id!=""){ 
    session_start(); 
    $_SESSION["Register"] = $id; 
} 

Hinweis zu erhalten: mysql_query wurde in PHP 5.5.0 veraltet, und es wurde in PHP 7.0.0 entfernt. Stattdessen sollte die Erweiterung MySQLi oder PDO_MySQL verwendet werden. Alternativen zu dieser Funktion sind: mysqli_query() or PDO::query()

Darüber hinaus ist die Übergabe der Werte direkt in die Abfrage nicht sicher. Bitte lesen Sie über SQL injection

+0

Sie sollten keine Lösung für die veraltete API mysql_ * vorschlagen – Jens

+0

der Code ist anfällig für SQL-Injektion zu, aber das bedeutet nicht, dass ich die Implementierung schreiben würde. Ich kann ihm die Logik sagen, seinen bestehenden Code zu korrigieren, und ja, kann einige Vorschläge hinzufügen. Sollte soweit ich denke keine Abstimmungen sein. @Jens –

+0

Zumindest können Sie einen Kommentar hinzufügen, dass Benutzer diese API nicht verwenden – Jens

0

Sie können mysql_insert_id()

mysql_query("INSERT INTO mytable (1, 2, 3, 'blah')"); 
$last_id = mysql_insert_id(); 

sehen: mysql_insert_id()

Hinweis: mysql_query wurde in PHP 5.5.0, veraltet, und es wurde in PHP 7.0.0 entfernt . Stattdessen sollte die Erweiterung MySQLi oder PDO_MySQL verwendet werden. Alternativen zu dieser Funktion sind: mysqli_query() oder PDO::query()

+0

Was ist, wenn jemand anders eine andere Zeile dort einfügt? –

+0

Sie sollten keine Lösung für die veraltete MySQL-API vorschlagen – Jens

0

als Kommentare von Jens. Ich empfehle dringend, mysqli oder noch besser PDO zu verwenden. Als mysql wird depreciated und in vollständig entfernt.

jetzt nach Ihrem Code versuchen, diesen

if ($insert) { 
     $select_id = mysql_query("SELECT `id` from `users` WHERE `email` = '$form_input'") or die(mysql_error());// to see error 
if($select_id != null){ 
     $id_arr = mysql_fetch_array($select_id); 
     $id_var = $id_arr['id']; 
     session_start(); 
     $_SESSION["Register"] = $id_var; 
    } 
} 
Verwandte Themen