PHP未定义的索引或变量

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="

我搜索了整个互联网,看到了无限的堆栈帖子,然后是一些教程,但我仍然无法让它工作,但为什么?当我使用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')");


?>

它显示“未定义的索引或变量”的原因是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以这种方式进行高级操作时,您不需要额外的文件将数据插入数据库。不知怎的,谢谢,因为它位于外部源中,我遇到了这个问题!