我的mySQL_query有什么问题?

时间:2013-08-20 22:10:47

标签: php mysql

当我使用下面的查询时,它只会更新,如果新值比原来的更短,任何人都知道这是为什么?

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>

1 个答案:

答案 0 :(得分: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(),在$sql变量前面插入一个回显来将它打印到屏幕上(当你运行时再次提交文件),将打印的字符串复制到PHPMyAdmin,看看是否应该有任何未被PHP捕获的MySQL错误。此外,您将很快发现是否有任何错误

此外,我会研究MySQLi,它会在使用MySQL时为您提供更多功能,并为您提供更多安全查询功能。