所以我有这个代码,它应该将名称和电子邮件地址发送到数据库。它不仅没有这样做,而且在我的第二行代码中,我想要print_r无论输入什么,我仍然得到一个空白屏幕。是否有设置显示我的代码中发生的错误,我已关闭或此代码是错误的?
//Only process the form if $_POST isn't empty
if(! empty($_POST)){
print_r($_POST); exit;
//Connect to MYSQL
$mysqli = new mysqli('localhost', 'root','','snippets');
//Check connection
if($mysqli ->connect_error){
die('Connect Error: '. $mysqli->connect_errno . ': ' . $mysqli->connect_error);
}
//Insert data
$sql = "INSERT INTO user(name, email) VALUES ('{$mysqli->real_escape_string($_POST['name'])}','{$mysqli->real_escape_string($_POST['email'])}' )";
$insert = $mysqli->query($sql);
//Print reponse from MySQL
if($insert){
echo "Success! Row ID: {$mysqli->insert_id}";
}else{
die("Error: {$mysqli->errno}:{$mysqli->error}");
}
//Close connection
$mysqli ->close();
}
?>
<form method="post" action="">
<input name="name" type="text">
<input name="email" type="email">
<input type="submit" value="Submit Form">
</form>
答案 0 :(得分:1)
$_POST
。最可能的原因是您的PHP设置为不创建超级全局($_POST
,$_GET
...)。
修复程序可能位于php.ini
文件中。打开该文件,然后查找设置variables_order
(See the docs)。我怀疑在配置文件中已经注释掉了(或者不存在)。将其设置为:
variables_order = "EGPCS"
如果您不确定活动php.ini
的位置,请将您的PHP文件更改为以下代码:
<?php
phpinfo(); exit;
将显示有关您的安装的大量信息。 Loaded Configuration File
的值将告诉您要编辑哪个文件来更改PHP设置。
如果其他所有方法都失败,您可以自行提取提交的值;它非常简单:
$args = []; //will hold the submitted arguments
parse_str(file_get_contents('php://input'),$args);
从那里开始,只需使用$args
,就像使用$_POST
一样。它包含您的表单输入。请注意,它还包含您在$_GET
中通常会看到的输入,当&#34; GET&#34;请求
答案 1 :(得分:0)
原来我的WAMP服务器和Phpstorm提供的内置服务器之间存在冲突,这是我正在使用的IDE。因为@Beetlejuice怀疑我的php.ini文件中也存在问题。这应该是未启用的,并设置为On:; enable_post_data_reading = Off
感谢所有帮助过的人。
答案 2 :(得分:-1)
&#34; INSERT INTO用户(姓名,电子邮件)VALUES(&#39; {$ mysqli-&gt; real_escape_string($ _ POST [&#39; name&#39;])}&#39;,&# 39; {$ mysqli-&gt; real_escape_string($ _ POST [&#39; email&#39;])}&#39;)&#34;
尝试使用反斜杠&#34; name&#34;和&#34;电子邮件&#34;属性。这将减少报价中的歧义。大多数时候,这就是问题所在。
所以,它看起来像这样:
"INSERT INTO user(name, email) VALUES ('{$mysqli-
>real_escape_string($_POST[\'name\'])}','{$mysqli->real_escape_string($_POST[\'email\'])}' )"
但是,我认为最佳做法是使用&#34; real_escape_string&#34;在此查询之前。通常,在查询字符串中使用时不会运行php。所以,保存
$ mysqli-&gt; real_escape_string($ _ POST [&#39; name&#39;]在一个变量中 AND
$ mysqli-&gt; real_escape_string($ _ POST [&#39; email&#39;]在另一个变量然后,
将其添加到查询