2012-12-31 30 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."); 

?> 

我需要幫助,以$ query =「INSER ...'開頭的中間一行'random_string(10)')」 ;如何調用函數/方法在php中向mysql插入函數返回值

我需要一個隨機的字母數字字符串插入到名爲「customers」的表中,但不是調用函數「random_string()」,而是將「random_string(10)」插入到我的表中, 6字段:

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

我該如何解決這個問題?

+4

當您發佈問題時,不應包含用戶名和數據庫傳遞 – ohiock

+1

而且絕大多數情況下不是服務器... – dualed

+1

我會改變你的服務器憑證......並且很快。 –

回答

1

拼接功能和你的字符串,

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

一點題外話,查詢與SQL Injection脆弱的,如果變量的值從外面走了進來。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements,你可以擺脫圍繞值使用單引號。

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

這應該工作! 我認爲,即使雙引號將解析變量,他們不會解析函數。

0

使這兩種說法。在第一個語句中,您調用函數並將該值賦給變量,然後在INSERT...聲明中使用變量