我搜索了整个互联网上看到无限的堆栈帖子,然后写了一些教程,但仍然无法让它工作,但为什么?当我使用isset时,它一直告诉我未定义的索引变为未定义的变量。对不起,我的编码水平很低...... 提前谢谢。
<form name="ghostform" action="insert.php" method="post">
<input type="hidden" name="id" value="1" id="id" />
<input type="hidden" name="eidos" value="2" id="eidos" />
<input type="hidden" name="seidos" value="3" id="seidos" />
<input type="hidden" name="idiotites" value="4" id="idiotites" />
</form>
<?php
mysql_connect("localhost","root","")or die("cant connect to server");
mysql_set_charset('utf8');
@mysql_select_db("cafemanager")or die( "Unable to select database");
$id = $_POST['id'];
$eidos = $_POST['eidos'];
$seidos = $_POST['seidos'];
$idiotites = $_POST['idiotites'];
mysql_query("INSERT INTO Current(id, eidos, specificeidos, idiothtes) VALUES('$id','$eidos','$seidos','$idiotites')");
?>
答案 0 :(得分:0)
它显示的原因&#34;未定义的索引或变量&#34;是因为PHP无法在$ _POST数组中找到变量。
如果此页面处理来自表单的输入,请确保表单的操作指向此页面,并将表单的方法设置为POST。
<form action="urlofthispage" method="POST">
如果此页面也用于处理其他方案,您只需检查是否在$ _POST中设置了变量。 isset函数只是检查变量是否已设置。像这样:
if(isset($_POST['id']))
{
//then do what do u want if the variable is present
}
else
{
//then do what do u want if the variable is not present
}
有关isset函数的官方文档,您可以查看此参考:
答案 1 :(得分:0)
您认为PHP可以从您的字段中获取值,但您不能... 因为在PHP意识到它们存在之前,您需要以某种方式提交这些值,或者通过提交按钮执行此操作,或者通过javascript发送您的值。
在您从服务器请求内容之前未执行的服务器端语言。这意味着如果您想要这些值(位于客户端浏览器中),您需要将它们(POST)发送到服务器以处理<?php
和?>
之间的所有内容
试用此代码
<form name="ghostform" action="insert.php" method="post">
<input type="hidden" name="id" value="1" id="id" />
<input type="hidden" name="eidos" value="2" id="eidos" />
<input type="hidden" name="seidos" value="3" id="seidos" />
<input type="hidden" name="idiotites" value="4" id="idiotites" />
<input type="submit" value="kablamo">
</form>
测试代码,它起作用。
只要你有一个提交按钮......
function getVal($var) {
if(!isset($_POST[$var]))
return 'default';
return $_POST[$var];
}
$id = getVal('id');
$eidos = getVal('eidos');
$seidos = getVal('seidos');
$idiotites = getVal('idiotites');
使用isset来确定是否设置了值 如果未设置该值,您可以使用具有默认值的函数(这只是一个原始示例)。或者,您可以在连接到数据库之前引发某种形式的异常。
@ MiQUEL的解决方案比较简洁,只是因为它更具可读性而且你可以在设置值之前执行操作..这就是:
function getVal($var) {
if(!isset($_POST[$var])) {
mysql_connect("localhost","root","")or die("cant connect to server");
mysql_select_db("mydb");
$result = mysql_fetch_array(mysql_query("SELECT defaultValue FROM mytable WHERE name=" . $var), MYSQL_NUM);
return $result[0];
}
return $_POST[$var];
}
答案 2 :(得分:0)
每当您需要GET或POST时,我建议您在未获取所有值的情况下指定默认值,因此该函数不会发出任何警告或在SQL句子。
示例:
在这种情况下,我将0定义为默认值。
$id = isset($_POST["id"])?$_POST["id"]:0;
而且,如果您正在等待数字作为值。
$id = isset($_POST["id"])?intval($_POST["id"]):0;
如果0是一个不可能的值并且没有任何意义,那么你就知道出了什么问题,你可以对它做出反应。
答案 3 :(得分:0)
你怎么提交这个?
请使用if(isset($ _ POST [&#39; name&#39;]){// do stuffs}
答案 4 :(得分:0)
使用类似的东西:
<?php
if($_POST) {
mysql_connect("localhost","root","")or die("cant connect to server");
mysql_set_charset('utf8');
mysql_select_db("cafemanager")or die( "Unable to select database");
$id = mysql_real_escape_string(strip_tags($_POST['id']));
$eidos = mysql_real_escape_string(strip_tags($_POST['eidos']));
$seidos =mysql_real_escape_string(strip_tags( $_POST['seidos']));
$idiotites = mysql_real_escape_string(strip_tags($_POST['idiotites']));
mysql_query("INSERT INTO Current(id, eidos, specificeidos, idiothtes) VALUES('$id','$eidos','$seidos','$idiotites')");
}
?>
<form action="" method="post">
<input type="hidden" name="id" value="1" id="id" />
<input type="hidden" name="eidos" value="2" id="eidos" />
<input type="hidden" name="seidos" value="3" id="seidos" />
<input type="hidden" name="idiotites" value="4" id="idiotites" />
</form>
但是请开始使用mysqli而不是弃用的mysql