2012-12-31 2 views
1
<?php 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$email = $_POST['email']; 

function random_string($length) { 
    $key = ''; 
    $keys = array_merge(range(0, 9), range('a', 'z')); 

    for ($i = 0; $i < $length; $i++) { 
     $key .= $keys[array_rand($keys)]; 
    } 

    return $key; 
} 

if($email) 
{ 

$connect = mysql_connect(" HOST ", " USERNAME ", " PASSWORD") or die("Couldn't Connect"); 

mysql_select_db("CiniCraftData") or die ("Couldn't Find Database"); 

      $query = "INSERT INTO customers (fname, lname, email, alphanum) VALUES ('$fname', '$lname', '$email', 'random_string(10)')"; 
      $result = mysql_query($query) or die("Some kind of error occured."); 

      echo ("Welcome " + $username + ", you are now in my database!"); 

} 
else die("You did not fill out the fields correctly, please try again."); 

?> 

J'ai besoin d'aide avec la ligne au milieu qui commence par $ query = "INSER ... 'random_string (10)')" ; J'ai besoin d'une chaîne alphanumérique aléatoire pour être insérée dans la table appelée "clients" mais au lieu d'appeler la fonction "random_string()" elle insère "random_string (10)" dans ma table qui me donne ceci pour ma table avec 6 champs:Comment appeler une fonction/méthode en php pour insérer la fonction return la valeur à mysql

5 John Smith [email protected] random_string(10) 0 

Comment résoudre ce problème?

+4

Vous ne devez pas inclure le nom d'utilisateur et passer pour votre base de données lorsque vous postez des questions – ohiock

+1

Et certainement pas le serveur ... – dualed

+1

Je changerais vos identifiants de serveur ... et rapidement. –

Répondre

1

concaténer la fonction et votre chaîne,

$query = "INSERT INTO customers (fname, lname, email, alphanum) VALUES ('$fname', '$lname', '$email', '" . random_string(10) ."')"; 

En tant que sidenote, la requête est vulnérable SQL Injection si les valeurs de la variable sont venus de l'extérieur. S'il vous plaît jeter un oeil à l'article ci-dessous pour apprendre comment éviter cela. En utilisant PreparedStatements vous pouvez vous débarrasser de l'utilisation de guillemets simples autour des valeurs.

3
$query = "INSERT INTO customers (fname, lname, email, alphanum) VALUES ('$fname', '$lname', '$email', '" . random_string(10) . "')"; 

Cela devrait fonctionner! Je pense que même si les guillemets doubles analysent les variables, ils n'analysent pas les fonctions.

0

font deux déclarations de celui-ci. Dans la première déclaration, vous appelez votre fonction et affectez la valeur à une variable, puis dans votre instruction INSERT... vous utilisez la variable

Questions connexes