0

请帮助我是编码 php mysql 的新手这段代码给了我这样的错误:

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

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

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

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

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

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

注意:未定义索引:第 15 行 C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php 中的密码 ERROR can not update data

这是代码

<?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";
        }
    ?>
4

3 回答 3

2

尽管我们刚才回答了这个问题,但当您尝试运行更新并指定列名时,您不应该在 SQL 中使用变量。

您的 SQL 语句应如下所示:

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

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

于 2013-10-10T11:00:21.860 回答
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";
        }
}
于 2013-10-10T11:24:48.630 回答
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']."'";

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

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

我更喜欢使用 PDO(PHP 数据对象),它更容易使用,它还允许我使用一种称为“准备好的语句”的东西,它可以免受 SQL 注入攻击。您可以在此处阅读有关 PDO的更多信息。或者您可以在nettuts+上阅读有关它的简单教程

于 2013-10-10T11:01:17.713 回答