通过PHP提交到MySQL并发送空值时的HTML表单

通过PHP提交到MySQL并发送空值时的HTML表单,php,html,mysql,database,forms,Php,Html,Mysql,Database,Forms,所以我的变量设置好了 我的连接正常 但我仍然收到发送到数据库的空白值 $stmt = $connection->prepare('INSERT INTO EMAILS (email, first, last) VALUES (?,?,?)'); $stmt->bind_param('sss',$email, $first, $last); $email = mysql_real_escape_string($from); $first = mysql_real_escape_stri

所以我的变量设置好了

我的连接正常

但我仍然收到发送到数据库的空白值

$stmt = $connection->prepare('INSERT INTO EMAILS (email, first, last) VALUES (?,?,?)');
$stmt->bind_param('sss',$email, $first, $last);
$email = mysql_real_escape_string($from);
$first = mysql_real_escape_string($fname);
$last = mysql_real_escape_string($lname);
$stmt -> bind_result($result);
$stmt->execute();
我不准备陈述,所以完全有可能这一切都错了,但如果有人能分享一些见解,那就太好了


(编辑:变量表示值)

我不明白为什么要在将字符串绑定到查询后转义它们。正如有人指出的,在使用准备好的语句时,您也不需要它们

if(!$stmt = $connection->prepare("INSERT INTO EMAILS (email, first, last) VALUES (?,?,?)"))
{
    die($connection->error);
}
$stmt->bind_param('sss', $from, $fname, $lname);
$stmt->execute();
$stmt->close();
这将输入值或显示错误。为了进一步调试,您还可以回显
$from,$fname,$lname
变量,以确保它们是您认为的那样

编辑

正如其他人所指出的(但我没有注意到问题的标题,所以我没有注意到),我们是在假设$from、$fname和$lname实际上是定义的基础上工作的。如果通过表单提交,则可以使用

$from = $_POST["from"];
$fname = $_POST["fname"];
$lname = $_POST["lname"];

$\u POST[“”]
中的名称替换为HTML表单中这些字段的名称。请记住,在您使用
bind_param

注册它们之前,必须先执行此操作。您从未定义
$email、$first、$last
(并且使用
mysql\u real\u escape\u string
是完全错误的,准备好的语句会取代它)。@Quentin不是通过分配mysql\u real\u escape\u string($from)定义的变量吗;?好的,那么您在尝试使用它们之后定义它们,并且从不定义
$from
$fname
$lname
@Quentin
$fname$lname$from
都是在显示代码之前声明的。但是你是对的,没有必要使用
mysql\u real\u escape\u string
,使用的变量是在分配了
bind\u param
后声明的。除非你(我相信)在php.ini文件中启用了
register\u globals
,否则你需要通过$\u GET或$\u POST数组访问提交的数据。