PHP未定义的索引或变量

时间:2014-05-26 08:42:25

标签: 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="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')");


?>

5 个答案:

答案 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函数的官方文档,您可以查看此参考:

http://in2.php.net/isset

答案 1 :(得分:0)

您的实际问题

您认为PHP可以从您的字段中获取值,但您不能... 因为在PHP意识到它们存在之前,您需要以某种方式提交这些值,或者通过提交按钮执行此操作,或者通过javascript发送您的值。

PHP

在您从服务器请求内容之前未执行的服务器端语言。这意味着如果您想要这些值(位于客户端浏览器中),您需要将它们(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>

测试代码,它起作用。
只要你有一个提交按钮......

image

在旁注中,这是isset如何工作

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