While PHP中未定义的索引

While PHP中未定义的索引,php,Php,我得到一个未定义索引的错误,原因是什么 while ($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['CandidateName'] . "</td>"; echo "<td>" . $row['Position'] . "</td>"; echo "<td><

我得到一个未定义索引的错误,原因是什么

while ($row = mysqli_fetch_array($result)) {
        echo "<tr>";

        echo "<td>" . $row['CandidateName'] . "</td>";
        echo "<td>" . $row['Position'] . "</td>";
         echo "<td><input type='radio' name='candidateid' value='".$row['candidateID']."' >";
      echo "<td>" . $row['NumberofVotes'] . "</td>";
        $candidateid=$row['CandidateID'];

    }
现在我将向您展示整个代码及其工作原理,我在这里的输出是在单选按钮工作时添加1个投票数。它没有错误,但当我选择第一个单选按钮时,它只更新第二个数据

<html>
        <center>
        <font size="2" face = "century gothic">
        <?php
        $con=mysqli_connect("localhost","root","","election2016");
        // Check connection
        if (mysqli_connect_errno())
        {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        $result = mysqli_query($con,"SELECT * FROM candidate_info");
        echo "<table border='1'>
        <tr>
        <th>Candidate Name</th>
        <th>Position</th>
        <th>Vote</th>
        <th>Number of Votes</th>
        </tr>";
        while ($row = mysqli_fetch_array($result)) {
            echo "<tr>";

            echo "<td>" . $row['CandidateName'] . "</td>";
            echo "<td>" . $row['Position'] . "</td>";
             echo "<td><input type='radio' name='candidateid' value='".$row['CandidateID']."' >";
          echo "<td>" . $row['NumberofVotes'] . "</td>";
            $candidateID=$row['CandidateID'];

        }
        echo "</table>";
        mysqli_close($con);
        ?>

        <br>
        <br>
        <form method = "post" action = "<?php $_PHP_SELF ?>">
     <input type="text" name="candidateid" value="<?php echo $candidateID;?>">
         <input name = "update" type = "submit" id = "update" value = "update">
        </form>
        </center>
        </font>
        </html>
        <?php
                 if(isset($_POST['update'])) {
                    $dbhost = 'localhost';
                    $dbuser = 'root';
                    $dbpass = '';
 $candidateid = $_POST['candidateid'];
                    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

                    if(! $conn ) {
                       die('Could not connect: ' . mysql_error());
                    }

                    $candidateid = $_POST['candidateid'];


                    $sql = "UPDATE candidate_info SET numberofvotes = 1 WHERE candidateid = '$candidateid'" ;
                    mysql_select_db('election2016');
                    $retval = mysql_query( $sql, $conn );

                    if(! $retval ) {
                       die('Could not update data: ' . mysql_error());
                    }
                    echo "Updated data successfully\n";

                    mysql_close($conn);
                 }
        ?>

数组$行中没有作为'candidateid'的键,请执行var_dump$行;然后查看键名是什么,或者如果这些键名与DB表中的列名相同,请检查它的名称。

字段candidateid应为整数数据类型,但在更新查询中是否用单引号将此字段值括起来

$sql = "UPDATE candidate_info SET numberofvotes = 1 WHERE candidateid = '$candidateid'";
如果是整数数据类型,则应删除单引号

$sql = "UPDATE candidate_info SET numberofvotes = 1 WHERE candidateid = $candidateid";
在MySQL中,每个字段名都是区分大小写的,正如您所说的,字段名是区分大小写的

候选人ID、候选人姓名、职位、票数

因此,在检索值时也应该使用这些名称

    <?php
             if(isset($_POST['update'])) {
                $dbhost = 'localhost';
                $dbuser = 'root';
                $dbpass = '';
                $candidateid = $_POST['candidateid'];
                $conn = mysql_connect($dbhost, $dbuser, $dbpass);

                if(! $conn ) {
                   die('Could not connect: ' . mysql_error());
                }

                $candidateid = $_POST['candidateid'];


                $sql = "UPDATE candidate_info SET numberofvotes = numberofvotes + 1 WHERE candidateid = '$candidateid'" ;
                mysql_select_db('election2016');
                $retval = mysql_query( $sql, $conn );

                if(! $retval ) {
                   die('Could not update data: ' . mysql_error());
                }
                echo "Updated data successfully\n";

                mysql_close($conn);
             }
    ?>
<html>
    <center>
    <font size="2" face = "century gothic">
    <?php
    $con=mysqli_connect("localhost","root","","election2016");
    // Check connection
    if (mysqli_connect_errno())
    {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $result = mysqli_query($con,"SELECT * FROM candidate_info");
    ?>
    <form method = "post" action = "<?php $_PHP_SELF ?>">
    <?php
    echo "<table border='1'>
    <tr>
    <th>Candidate Name</th>
    <th>Position</th>
    <th>Vote</th>
    <th>Number of Votes</th>
    </tr>";
    while ($row = mysqli_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $row['candidatename'] . "</td>";
        echo "<td>" . $row['position'] . "</td>";
        echo "<td><input type='radio' name='candidateid' value='".$row['candidateid']."' >";
        echo "<td>" . $row['numberofvotes'] . "</td>";
    }
    echo "</table>";
    mysqli_close($con);
    ?>

    <br>
    <br>
    <input name = "update" type = "submit" id = "update" value = "update">
    </form>
    </center>
    </font>
    </html>
需要注意的要点:

无需为发送candidateid以更新NumberOfVoces创建单独的。 如果您在同一页面中提交,请避免多个数据库连接。 您的数据库表候选者信息字段名称与您在中写入的内容不匹配。所以,使用数据库表中的确切列名。 把你的全部都放进去。 因为您正在寻找单个候选值以进行更新,所以单选按钮很有用。如果需要更新多个候选值,则必须使用名称为数组类型的复选框。 更新代码:


打印行可能重复;显示和显示的结果是什么?请查看已编辑的oneecho;试试这个@AlexiusjoeCoronelPaste错误或者告诉行no哪个错误来了。先生,请看编辑后的帖子有一个新的错误,我试试你所说的said@AlexiusjoeCoronel将$row['candidateid']更改为$row['candidateid']立即删除变量转储如果未更改输入元素中的键,请更改echo;有回声@AlexiusjoeCoronel那么你现在改变了你最初的错误是什么的问题?为什么不告诉我们编码什么,我们就可以做你的工作呢?谢谢你的帮助,但我认为你为我做了很多,谢谢你,多点击效果很好为什么我不能在文本框中传输单选按钮值,这样我就可以更新它为什么你想将值传输到文本框?你可以直接在表标记之前启动表单标记,然后在提交表单后,你可以自动获取所选单选按钮值。我的目标是当我按下单选按钮时这个数字将会增加1,你能帮我吗?哇,太多了,这是一个很大的帮助,但它只增加了1。我怎样才能增加它?我的意思是两个人投票给同一个候选人,它将如何增加1并保存在数据库中?
    <?php
             if(isset($_POST['update'])) {
                $dbhost = 'localhost';
                $dbuser = 'root';
                $dbpass = '';
                $candidateid = $_POST['candidateid'];
                $conn = mysql_connect($dbhost, $dbuser, $dbpass);

                if(! $conn ) {
                   die('Could not connect: ' . mysql_error());
                }

                $candidateid = $_POST['candidateid'];


                $sql = "UPDATE candidate_info SET numberofvotes = numberofvotes + 1 WHERE candidateid = '$candidateid'" ;
                mysql_select_db('election2016');
                $retval = mysql_query( $sql, $conn );

                if(! $retval ) {
                   die('Could not update data: ' . mysql_error());
                }
                echo "Updated data successfully\n";

                mysql_close($conn);
             }
    ?>
<html>
    <center>
    <font size="2" face = "century gothic">
    <?php
    $con=mysqli_connect("localhost","root","","election2016");
    // Check connection
    if (mysqli_connect_errno())
    {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $result = mysqli_query($con,"SELECT * FROM candidate_info");
    ?>
    <form method = "post" action = "<?php $_PHP_SELF ?>">
    <?php
    echo "<table border='1'>
    <tr>
    <th>Candidate Name</th>
    <th>Position</th>
    <th>Vote</th>
    <th>Number of Votes</th>
    </tr>";
    while ($row = mysqli_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $row['candidatename'] . "</td>";
        echo "<td>" . $row['position'] . "</td>";
        echo "<td><input type='radio' name='candidateid' value='".$row['candidateid']."' >";
        echo "<td>" . $row['numberofvotes'] . "</td>";
    }
    echo "</table>";
    mysqli_close($con);
    ?>

    <br>
    <br>
    <input name = "update" type = "submit" id = "update" value = "update">
    </form>
    </center>
    </font>
    </html>
<html>
    <center>
        <font size="2" face = "century gothic">
        <?php
        $con=mysqli_connect("localhost","root","","election2016");
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        ?>
        <form method="post" action = "<?php $_PHP_SELF ?>">
            <?php
            $result = mysqli_query($con,"SELECT * FROM candidate_info");
            echo "<table border='1'>
                <tr>
                    <th>Candidate Name</th>
                    <th>Position</th>
                    <th>Vote</th>
                    <th>Number of Votes</th>
                </tr>";
                while ($row = mysqli_fetch_array($result)) {
                    echo "<tr>";
                        echo "<td>" . $row['candidatename'] . "</td>";
                        echo "<td>" . $row['position'] . "</td>";
                        echo "<td><input type='radio' name='candidateid' value='".$row['candidateid']."' ></td>";
                        echo "<td>" . $row['numberofvotes'] . "</td>";
                        $candidateID=$row['candidateid'];
                    }
            echo "</table>";
            mysqli_close($con);
            ?>
            <br>
            <br>
            <input name = "update" type = "submit" id = "update" value = "update">
        </form>
    </center>
    </font>
</html>

<?php
if(isset($_POST['update'])) {

    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $candidateid = $_POST['candidateid'];
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

    if(! $conn ) {
         die('Could not connect: ' . mysql_error());
    }

    $candidateid = $_POST['candidateid'];

    $sql = "UPDATE candidate_info SET numberofvotes = 1 WHERE candidateid = '$candidateid'" ;
    mysql_select_db('election2016');
    $retval = mysql_query( $sql, $conn );

    if(! $retval ) {
         die('Could not update data: ' . mysql_error());
    }
    echo "Updated data successfully\n";

    mysql_close($conn);
}
?>