当我使用下面的查询时,它只会更新,如果新值比原来的更短,任何人都知道这是为什么?
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>
答案 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时为您提供更多功能,并为您提供更多安全查询功能。