2011-11-04 15 views
5

sto usando la seguente dichiarazione, ma non è sicuro come ottenere il $variables all'interno dell'istruzione correttamente:Utilizzando variabili PHP all'interno dichiarazione dell'inserto MySQL

mysql_query("INSERT INTO subscribers (email, referral_id, user_id, ip_address) 
      VALUES ('$user_email', '$user_refer', '$user_share', '$_SERVER['REMOTE_ADDR']')"); 
+0

provare a utilizzare la concatinazione ... ma è necessario filtrare l'input prima 'mysql_real_escape_string' o PDO http://php.net/manual/en/book.pdo.php – kjy112

+0

Utilizzare query parametrizzate. – aib

+0

possibile duplicato di [Come includere una variabile PHP all'interno di una istruzione mysql insert] (http://stackoverflow.com/questions/7537377/how-to-include-a-php-variable-inside-a-mysql-insert- dichiarazione) –

risposta

8

basta cambiare l'ultima:

mysql_query("INSERT INTO subscribers (email, referral_id, user_id, ip_address) 
VALUES ('$user_email', '$user_refer', '$user_share', '".$_SERVER['REMOTE_ADDR']."')"); 
6

Quando si utilizza un tipo di matrice in una stringa (le virgolette doppie "" significa php sta per analizzare tale stringa) si deve racchiudere il valore che si desidera utilizzare tra parentesi graffe, cioè

mysql_query("INSERT INTO subscribers (email, referral_id, user_id, ip_address) 
     VALUES ('$user_email', '$user_refer', '$user_share', '{$_SERVER['REMOTE_ADDR']}')"); 
+0

Wel-spiegato .... Grazie – Anjuman

0

Utilizzare in questo modo:

mysql_query("INSERT INTO subscribers (email, referral_id, user_id, ip_address) 
      VALUES ('".$user_email."'… 
+0

Questo non è necessario a parte l'ultima variabile, anche se –

1

anche se domanda letterale di soluzione il link nei commenti, il problema vero e proprio si faccia non ha nulla a che fare con SQL, ma con la sintassi di stringa PHP. Quindi, ecco un link per il vostro riferimento: http://php.net/types.string

Questa pagina è tra le cose più importanti che dovete sapere su PHP.
Dovresti studiarlo diligentemente, o non sarai in grado di utilizzare PHP per compiti anche più semplici come questo.

+0

Grazie, so che era troppo semplice di una domanda, ero solo in un colpo rapido. Leggerò di più su questa roba. – stewart715

0

modo più sicuro per fare quello che vuoi è invece di questo:

mysql_query("INSERT INTO subscribers (email, referral_id, user_id, ip_address) 
     VALUES ('$user_email', '$user_refer', '$user_share', '$_SERVER['REMOTE_ADDR']')"); 

fare questo:

$ query = "INSERT INTO abbonati (e-mail, referral_id, user_id, IP_address) VALORI (' $ user_email ',' $ user_refer ',' $ user_share ',' {$ _SERVER ['REMOTE_ADDR']} ') "

Nota le parentesi graffe attorno all'indice all'interno della variabile $ _SERVER. Se vuoi racchiudere un indice all'interno di un superglobale, allora è meglio usare parentesi graffe. altrimenti, usa la concatenazione come suggerito da altri.