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)')"; 开头的中间行

我需要一个随机字母数字字符串插入到名为“customers”的表中,但不是调用函数“random_string()”,而是将“random_string(10)”插入到我的表中,这为我的表提供了 6 个字段:

5   John    Smith   Jogsz@CiniCraft.com random_string(10)   0

我该如何解决?

4

3 回答 3

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

这应该工作!我认为即使双引号会解析变量,它们也不会解析函数。

于 2012-12-31T00:42:34.333 回答
2

连接函数和你的字符串,

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

作为旁注,SQL Injection如果变量的值来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

于 2012-12-31T00:43:43.440 回答
0

做两个陈述。在第一条语句中,您调用函数并将值分配给变量,然后在INSERT...语句中使用该变量

于 2012-12-31T00:43:58.417 回答