1

当我使用下面的查询时,它只会在新值比原来的值短时更新,有人知道这是为什么吗?

mysql_query("UPDATE users SET first_name='$first_name',
              last_name='$last_name',
              email='$email',
              bio='$bio' WHERE id='$id'");

<?php
    if(isset($_POST['update-profile'])){
        $first_name = $_POST['first_name'];
        $last_name = $_POST['last_name'];
        $email = $_POST['email'];
        $bio = $_POST['bio']; 

        if(empty($bio) || empty($first_name) || empty($last_name) || empty($email)){
            echo 'Please fill in all fields!';
        } else {
            mysql_query("UPDATE users SET first_name='$first_name', last_name='$last_name', email='$email', bio='$bio' WHERE id='$id'");
            echo "Profile Updated";
            header('location: pond.php');
        }

    }
?>
            First Name: <br /><input type="text" name="first_name"></input><br /><br />
            Last Name: <br /><input type="text" name="last_name"></input><br /><br />
            Email Address: <br /><input type="email" name="email"></input><br /><br />
            Bio: <br /><input type="text" name="bio"></input><br /><br />
            <input type="submit" value="Update Profile" name="update-profile">
        </div>
    </div>
4

1 回答 1

1

正如@Maverick 告诉你的那样。在 PHPMyAdmin 中测试句子。

测试 SQL 语句的最简单方法是为其使用变量,例如:

$sql = "UPDATE users SET first_name='".$first_name."', last_name='".$last_name."', email='".$email."', bio='".$bio."' WHERE id='".$id."'";

然后使用mysql_query($sql);

似乎更多的代码,但这里的技巧是你可以注释掉你的header(),在变量前面插入一个 echo 以$sql将它打印到屏幕上(当你再次运行文件时),将打印的字符串复制到PHPMyAdmin并查看是否有应该是任何未被 PHP 捕获的 MySQL 错误。你也会很快发现是否有任何错误

另外我会研究 MySQLi,它会在使用 MySQL 时为您提供更多功能,并为您提供更多保护查询的能力。

于 2013-08-20T22:52:33.743 回答