我的代码中的undefine变量错误

时间:2013-10-10 10:57:53

标签: php mysql

请帮助我新编码php mysql这段代码给我的错误如:

  

注意:未定义的索引:C:\ Program中的名称   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php

     

注意:未定义的索引:C:\ Program中的姓氏   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php

     

注意:未定义的索引:C:\ Program中的contact_number   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php

     

注意:未定义的索引:C:\ Program中的电子邮件   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php

     

注意:未定义的索引:C:\ Program中的位置   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php

     

注意:未定义的索引:C:\ Program中的user_name   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php

     

注意:未定义的索引:C:\ Program中的密码   第15行的Files \ EasyPHP-5.3.9 \ www \ Authentication1 \ update1_ac.php   错误无法更新数据

这是代码

<?php
    $host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password `enter code here`
    $db_name="administrator"; // Database name 
    $tbl_name="players"; // Table name 

// Connect to server and select database.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");
    if (isset($_POST['submit'])){
// update data in mysql database 
    $sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', Surname='".$_POST['surname']."', contact='".$_POST['contact_number']."', email='".$_POST['email']."', position='".$_POST['position']."', user_name='".$_POST['user_name']."', password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

    $result=mysql_query($sql);

// if successfully updated. 
    if(!empty($result)){                     //The error is here
    echo "Successful";
    echo "<BR>";
    echo "<a href='list2_player.php'>View result</a>";
        }
    }
    else {
    echo "ERROR can not update data";
        }
    ?>

3 个答案:

答案 0 :(得分:2)

虽然我们answered this a moment ago,但在尝试运行更新并指定列名时,不应在SQL中使用变量。

您的SQL语句应如下所示:

$sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', // etc etc
                                 ^ Column names don't need $

问题是您的代码基本上是在寻找您未在代码中指定的名为$name的变量,而不是简单地使用列名。

答案 1 :(得分:0)

这是您的错误

$sql="UPDATE $tbl_name ports SET $name='".$_POST['name']."', $Surname='".$_POST['surname']."', $contact='".$_POST['contact_number']."', $email='".$_POST['email']."', $position='".$_POST['position']."', $user_name='".$_POST['user_name']."', $password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

这不会起作用,因为php认为在“(双引号)字符串中,$ [variablename]表示变量。所以它认为你试图用名为name的变量的值替换'$ name',这显然不存在。

MySQL不需要在其变量名之前加上$符号。请改用此代码

$sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', Surname='".$_POST['surname']."', contact='".$_POST['contact_number']."', email='".$_POST['email']."', position='".$_POST['position']."', user_name='".$_POST['user_name']."', password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

此外,'Surname'是大写的,其他一切都不是。您可能需要仔细检查,因为通常不建议将列和变量名称的首字母大写。

Ps:由于您不熟悉PHP和MySQL,我应该警告您,您的代码容易受到称为“SQL注入攻击”的攻击。这是黑客在您的服务器上执行自己的SQL代码的一个技巧,您可以阅读有关here的更多信息。

我更喜欢使用PDO(PHP数据对象),它更容易使用它,它还允许我使用称为“预备语句”的东西,这些语句可以安全地免受SQL注入攻击。您可以阅读有关PDO here的更多信息。或者您可以在nettuts+

上阅读有关它的简单教程

答案 2 :(得分:0)

我认为你在表单提交之前调用了更新sql。首先,您需要在更新前检查

if(isset($_POST['submit']))
{
// update data in mysql database 
    $sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', Surname='".$_POST['surname']."', contact='".$_POST['contact_number']."', email='".$_POST['email']."', position='".$_POST['position']."', user_name='".$_POST['user_name']."', password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

    $result=mysql_query($sql);

// if successfully updated. 
    if(!empty($result)){                     //The error is here
    echo "Successful";
    echo "<BR>";
    echo "<a href='list2_player.php'>View result</a>";
        }

    else {
    echo "ERROR can not update data";
        }
}