请帮助我新编码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";
}
?>
答案 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";
}
}