<?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
我该如何解决这个问题?
答案 0 :(得分:3)
$query = "INSERT INTO customers (fname, lname, email, alphanum) VALUES ('$fname', '$lname', '$email', '" . random_string(10) . "')";
这应该有效! 我认为即使双引号将解析变量,它们也不会解析函数。
答案 1 :(得分:2)
连接函数和字符串,
$query = "INSERT INTO customers (fname, lname, email, alphanum) VALUES ('$fname', '$lname', '$email', '" . random_string(10) ."')";
作为旁注,如果变量的值来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。
答案 2 :(得分:0)
发表两个声明。在第一个语句中,您调用函数并将值赋给变量,然后在INSERT...
语句中使用变量