Php 更新数据库中的记录不起作用

Php 更新数据库中的记录不起作用,php,Php,我再次尝试学习php mysql,似乎我尝试了所有的方法来解决这个问题。。但对于初学者来说,互联网上的代码似乎没有什么帮助。。我真的无法更新数据库中的记录 <html> <body> <?php $db = mysql_connect("localhost", "root"); mysql_select_db("dbtry",$db); $id = isset($_GET['id']) ? $_GET['id'] : null; $submit = isset($_

我再次尝试学习php mysql,似乎我尝试了所有的方法来解决这个问题。。但对于初学者来说,互联网上的代码似乎没有什么帮助。。我真的无法更新数据库中的记录

<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("dbtry",$db);
$id = isset($_GET['id']) ? $_GET['id'] : null;
$submit = isset($_POST['submit']);
if ($id) {
if ($submit) {

        $result = mysql_query("select * from employees where id = " . mysql_real_escape_string($_GET['id']) );
        $row = mysql_num_rows($result);

if ($myrow != 0) {
mysql_query ("UPDATE employees SET firstname='$first',lastname='$last',address='$address',position='$position' WHERE id = '$id'");

}


echo "Thank you! Information updated.\n";
} else {
// query the DB
$result = mysql_query("SELECT * FROM `employees` WHERE `id` = " . mysql_real_escape_string($_GET['id']), $db);

$myrow = mysql_fetch_array($result);
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type=hidden name="id" value="<?php echo $myrow["id"] ?>">
First name:<input type="Text" name="first" value="<?php echo $myrow["firstname"] ?>"><br>
Last name:<input type="Text" name="last" value="<?php echo $myrow["lastname"] ?>"><br>
Address:<input type="Text" name="address" value="<?php echo $myrow["address"]
?>"><br>
Position:<input type="Text" name="position" value="<?php echo $myrow["position"]
?>"><br>
<input type="Submit" name="submit" value="Enter information">
</form>
<?php
}
} else {
// display list of employees
$result = mysql_query("SELECT * FROM employees",$db);
while ($myrow = mysql_fetch_array($result)) {
printf("<a href=\"%s?id=%s\">%s %s</a><br>\n",  $_SERVER['PHP_SELF'], $myrow["id"],
$myrow["firstname"], $myrow["lastname"]);
}
}
?>
</body>
</html>


通常当我遇到这个问题时,是因为自动提交关闭了,我忘记显式地告诉连接提交


编辑:你试过这个吗?根据您的设置,InnoDB可以设置为auto commit off(自动提交关闭),这意味着您需要在完成更新后明确告诉MySQL提交更新。

有两件事可能会导致您出现问题:首先,您尝试设置的值是尚未定义的变量。我假设你找到的begginers代码假设你启用了register globals,你真的不想这么做

mysql_query("UPDATE `employees` SET `firstname`='".$first."', `lastname`='".$last."',
`address`='".$address."', `position`='".$position."' WHERE `id` = '".$id".' ; ", $db) or 
die(mysql_error());
第二个问题是,如果您确实启用了register globals,则数据没有被清理,因此引号可能会发送错误的更新

请尝试以下方法:

$first = mysql_real_escape_string( $_POST['first'] );
$last = mysql_real_escape_string( $_POST['last'] );
$address= mysql_real_escape_string( $_POST['address'] );
$position = mysql_real_escape_string( $_POST['position'] );

mysql_query ("UPDATE employees SET firstname='$first',lastname='$last',address='$address',position='$position' WHERE id = '$id'");

这至少会让你振作起来并开始运转。我强烈建议您使用MySQLi库或PHP-PDO,并考虑使用准备好的语句来增加安全性。

我认为问题可能在于您与数据库的连接。mysql_connect函数的第三个参数是密码。因此:

$db = mysql_connect("localhost", "root");
应该是:

$db = mysql_connect("localhost", "root", "yourPassword");

如果你发布了你收到的错误类型,这也会有很大帮助。

你需要区分post和get。遵循下面的工作示例。它会帮你解决的:D

<html>
<body>
<?php
$db = mysql_connect("localhost", "root","");
mysql_select_db("test",$db);

if($_SERVER['REQUEST_METHOD']=='POST')
{
    //SUBMIT FORM
    $id=isset($_POST['id'])?$_POST['id']:0;
    if ($id) {
        $result = mysql_query("select * from parameter where id = " . mysql_real_escape_string($id) );
        $rows = mysql_num_rows($result);
        if ($rows != 0) {
        mysql_query ("UPDATE parameter SET name='".$_POST['name']."',value='".$_POST['value']."' WHERE id = '".$id."'");
        echo "Thank you! Information updated.\n";
    }
    }
}

if($_SERVER['REQUEST_METHOD']=='GET')
{
    //SELECT WHERE ID=GER VAR AND DISPLAY   
    $id = isset($_GET['id']) ? $_GET['id'] :0;// 
    if ($id) {
    // query the DB
    $result = mysql_query("SELECT * FROM parameter WHERE `id` = " . mysql_real_escape_string($_GET['id']), $db);
    $myrow = mysql_fetch_array($result);
    ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
    <input type=hidden name="id" value="<?php echo $myrow["id"] ?>">
    First name:<input type="Text" name="name" value="<?php echo $myrow["name"] ?>"><br>
    Last name:<input type="Text" name="value" value="<?php echo $myrow["value"] ?>"><br>
    <input type="Submit" name="submit" value="Enter information">
    </form>
    <?php
    }
    else {
    // display list of employees
    $result = mysql_query("SELECT * FROM parameter",$db);
    while ($myrow = mysql_fetch_array($result)) {
    echo "<a href='".$_SERVER['PHP_SELF']."?id=".$myrow['id']."'>".$myrow['name'].": ".$myrow['value']."</a><br>";
}
}
}
?>
</body>
</html>


对于MySQL中的此类问题,通常还可以说明表的引擎类型(InnoDB?MyISAM?)。我应该使用什么类型的InnoDB。您使用的类型取决于您尝试执行的操作。我已经尝试过,但仍然不起作用。是否有可能是我的计算机安全性问题,或者是我使用的服务器或浏览器问题,,我尝试添加、删除、搜索和查看,代码运行良好。。但是对于编辑,我真的面临着一个巨大的困惑:)我会试试这个。。我很难学习更新,因为我不能真正在互联网上学习:)哇!感谢这个例子,我将以此作为我未来计划的基础。。你回答了我两天前的问题:)