Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL中的更新问题_Php_Html_Mysql - Fatal编程技术网

Php MySQL中的更新问题

Php MySQL中的更新问题,php,html,mysql,Php,Html,Mysql,我是初学者 我现在面临的问题变得相当乏味,尽管我做这件事是一种爱好,但在过去的几天里,我一直停留在这一点上,并尝试到处寻找解决方案。 我甚至完全修改了我的代码,遵循其他示例/教程 这是我最接近的 一切都填好了,表格也提交了。它表示成功,但当我返回页面时,该字段尚未更新。我甚至直接检查了数据库,以确保输出显示没有错误。但它也没有出现在那里 (表中确实有其他条目,但我只希望此页面编辑其中一个条目) 如果您能帮我指出我的错误以及原因,我们将不胜感激。最好是知道我哪里出了错,这样我可以在将来看到它 &l

我是初学者

我现在面临的问题变得相当乏味,尽管我做这件事是一种爱好,但在过去的几天里,我一直停留在这一点上,并尝试到处寻找解决方案。 我甚至完全修改了我的代码,遵循其他示例/教程

这是我最接近的

一切都填好了,表格也提交了。它表示成功,但当我返回页面时,该字段尚未更新。我甚至直接检查了数据库,以确保输出显示没有错误。但它也没有出现在那里

(表中确实有其他条目,但我只希望此页面编辑其中一个条目)

如果您能帮我指出我的错误以及原因,我们将不胜感激。最好是知道我哪里出了错,这样我可以在将来看到它

<?php
$host="****"; // Host name 
$username="****"; // Mysql username 
$password="****"; // Mysql password 
$db_name="****"; // Database name 
$tbl_name="****"; // 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");

// get value of id from the address bar
$id=$_GET['id'];

// get value of modname from the form
$modname=$_POST['modname'];

// update data in mysql database 
$sql = "UPDATE $tbl_name SET modname='$modname' WHERE id='$id'";
$result=mysql_query($sql);

// if successfully updated. 
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='edit.php'>Return to overview</a>";
}

else {
echo "ERROR";
}

?>

这应该可以解决您的问题

$sql = "UPDATE {$tbl_name} SET modname='{$modname}' WHERE id='{$id}'";

希望有帮助

即使您的
id
字段在表单中是一个隐藏字段,它仍然作为POST属性发送,因此您需要
$\u POST['id']
来检索值(而不是
$\u GET['id']

此外,您应该将表名和列名放在`逗号'中,如下所示

$sql = "UPDATE `$tbl_name` SET `modname`='$modname' WHERE `id`='$id'";

然而,您的代码也对SQL注入敞开了大门。阅读并重写代码。

在本例中,您的查询是可靠的,语法是正确的,但您的变量不包含所需的值。由于您正在学习,我想提供一些建议和示例代码

  • 虽然您的代码仍然有些简单,但请更改为。语法类似,但它不像mysql那样被降级,您可以使用准备好的语句
  • 在开发阶段,始终为您的功能/条件启用错误报告
  • 在尝试将变量与isset()、empty()等一起使用之前,请务必验证变量是否包含所需的值
  • 在插入数据库之前,始终验证/清理/转义用户输入
  • 样本:

    因此,您最初似乎是从查询字符串中获取
    id
    ,例如
    http://domain.com/get_id.php?id=1
    ?如果是这样,您的代码应该可以工作,只需确保您的URL格式正确即可。如果您是从您的
    获取
    id
    ,那么它应该是
    $\u POST

    // get value of id from the address bar
    if(!empty($_GET['id'])) {
        $id=$_GET['id'];
    } else {
       echo "ID is empty";
    }
    
    // get value of modname from the form
    if(!empty($_POST['modname'])) {
        $modname=$_POST['modname'];
    } else {
       echo "ID is empty";
    }
    
    // update data in mysql database 
    $sql = "UPDATE $tbl_name SET modname='$modname' WHERE id='$id'";
    $result=mysql_query($sql);
    
    // if successfully updated. 
    if($result){
    echo "Successful";
    echo "<BR>";
    echo "<a href='edit.php'>Return to overview</a>";
    }
    
    else {
    echo mysql_error();
    }
    

    那怎么解决呢?除了感谢你的建议外,它和他已经拥有的一样。不幸的是,它输出了相同的结果:(这应该不会有什么不同,我已经多次这样做了,特别是在列名方面。这是最佳做法。这是一个很好的做法,但可能无法解决他们的问题。我已经通读了它,理解了你所说的。假设我从上面的评论中正确理解了,它应该是通过e form.beging hidden并没有像我想象的那样改变这一点。不幸的是,使用您所说的返回“ID为空”。因为您的表单方法是post,是的,ID也应该是$\u post。这
    $sql=“SELECT modname FROM$tbl\u name WHERE ID='$ID'”;
    应该是
    $sql=“SELECT ID,modname FROM$tbl\u name WHERE ID='$ID'';
    。您正在回显您的id以发送值,但您尚未在查询中选择该值,并且该值不在数组中。已按建议进行更新。遗憾的是,仍然没有解决问题,并且仍然收到声明“id为空”的id我相信您的查询没有返回任何结果。
    Where id='$id'
    中的
    $id
    来自哪里?似乎您可能需要先设置它。将
    Where id='$id'
    更改为
    Where id='1'
    ,看看它是否按预期工作。Mega-derp。通过编辑,我错过了编辑的一个关键部分。if(!empty($u GET['id'])){从未更改为if(!empty($_POST['id']){。而第二部分是。我现在觉得很傻。我的借口是现在是凌晨2点。非常感谢您的帮助!
    // get value of id from the address bar
    if(!empty($_GET['id'])) {
        $id=$_GET['id'];
    } else {
       echo "ID is empty";
    }
    
    // get value of modname from the form
    if(!empty($_POST['modname'])) {
        $modname=$_POST['modname'];
    } else {
       echo "ID is empty";
    }
    
    // update data in mysql database 
    $sql = "UPDATE $tbl_name SET modname='$modname' WHERE id='$id'";
    $result=mysql_query($sql);
    
    // if successfully updated. 
    if($result){
    echo "Successful";
    echo "<BR>";
    echo "<a href='edit.php'>Return to overview</a>";
    }
    
    else {
    echo mysql_error();
    }
    
    // Retrieve data from database 
    $sql="SELECT id,modname FROM $tbl_name WHERE id='$id'";
    $result=mysql_query($sql);
    $rows=mysql_fetch_array($result);
    ?>
    
    <form name="form1" method="post" action="update_ac.php">
    <input name="modname" type="text" id="modname"></td>
    <br>
    <input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>">
    <br>
    <input type="submit" name="Submit" value="Submit">
    </form>