PHP未定义的索引或变量
我搜索了整个互联网,看到了无限的堆栈帖子,然后是一些教程,但我仍然无法让它工作,但为什么?当我使用isset时,它总是告诉我未定义的索引变成未定义的变量。对不起,我的编码水平低。。。 提前谢谢PHP未定义的索引或变量,php,mysql,undefined,Php,Mysql,Undefined,我搜索了整个互联网,看到了无限的堆栈帖子,然后是一些教程,但我仍然无法让它工作,但为什么?当我使用isset时,它总是告诉我未定义的索引变成未定义的变量。对不起,我的编码水平低。。。 提前谢谢 <form name="ghostform" action="insert.php" method="post"> <input type="hidden" name="id" value="1" id="id" /> <input type="hidden" name="
<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')");
?>
它显示“未定义的索引或变量”的原因是PHP无法在$\u POST数组中找到变量
如果此页面正在处理来自表单的输入,请确保表单的操作指向此页面,并且表单的方法设置为POST
<form action="urlofthispage" method="POST">
有关isset功能的官方文档,您可以查看以下内容以供参考:
您的实际问题
您假设PHP可以从字段中获取值,但您不能。。
因为在PHP意识到这些值存在之前,您需要以某种方式向服务器提交这些值,所以可以通过提交按钮或通过javascript发送您的值
PHP
一种服务器端语言,在您向服务器请求内容之前不会执行。这意味着,如果您想要这些值(位于客户端浏览器中),您需要将它们发送(POST)到服务器,以便处理
尝试此代码
<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>
用于捕获是否设置了值。
如果未设置值,则可以使用具有默认值的函数(这只是一个原始示例)。或者,您可以在连接到数据库之前引发某种形式的异常
@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];
}
<?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>
每当您需要GET或POST时,我建议您指定默认值,以防您无法获取所有值,这样函数就不会在SQL语句中抛出任何警告或附加内容
例如:
在这种情况下,我将0定义为默认值
$id = isset($_POST["id"])?$_POST["id"]:0;
而且,如果您正在等待一个数字作为值
$id = isset($_POST["id"])?intval($_POST["id"]):0;
如果0是一个不可能的值,并且没有任何意义,那么您知道出现了问题,并且可以对此作出反应。如何提交此信息
请使用if(isset($\u POST['name']){//do stuff}使用类似以下内容:
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];
}
<?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>
哪些字段未定义?我在这里没有看到一个isset
…使用if(isset($\u POST['eidos']){//your DB code here}
$id=$\u POST['id'];$eidos=$\u POST['eidos'];$seidos=$\u POST['seidos'];$idios=$\u POST['idioties'];您的表单提交标签在哪里?我的问题是为什么我无法将值发送到服务器,我可以使用isset跳过警告,但for的实际值(例如$eidos)未定义!@user3501188“显示它们”的原因为了提交这些值,您需要点击ENTER键,隐藏的值是可以的,但是您需要将这些值传输到服务器进行处理,因为这是执行PHP的地方,而不是在客户端。表单在index.PHP中,PHP脚本在insert.PHP中,我看到的问题是它没有得到名称/值来自表单的es/ID它好像找不到表单!thnx以这种方式进行高级操作时,您不需要额外的文件将数据插入数据库。不知怎的,谢谢,因为它位于外部源中,我遇到了这个问题!