这是我的php代码。在此代码中,如果用户编辑他/她的信息并单击更新按钮,则必须在数据库端更新发布的值。我的用户名表是users.But当我想要发布时一些价值只是名称更新而不是其他。并且日期也改为0000-00-00。为什么会发生这种情况?我无法理解。任何想法和回复都会有所帮助?
<?php
if(isset($_POST['update']))
{
include("db.php");
$name = $_POST['name'];
$password1 = md5($_POST['password1']);
$password2 = md5($_POST['password2']);
$date_of_birth = $_POST['date_of_birth'];
$place_of_birth = $_POST['place_of_birth'];
$info = $_POST['info'];
$nationality = $_POST['nationality'];
echo $_POST['name'];
echo $name;
echo $date_of_birth;
echo $info;
echo $place_of_birth;
echo $nationality;
if ($password1 != $password2) {
include "src/header.php";
include "src/mainmenu.php";
echo '<p>Error: password does not match. Try again</a>';
echo '<p><a href="EditProfile.php">Try again</p>';
include "src/footer.php";
exit;
}
//If the name and the other fields are empty
if($name=='' || $email=='' || $password1=='' || $password2=='' || $date_of_birth==
''|| $place_of_birth==''|| $info=='' || $nationality=='' ){
include "src/header.php";
include "src/mainmenu.php";
echo '<p>Error:You didn\'t fill the fields.Try again</a>';
echo '<p><a href="EditProfile.php">Try again</p>';
include "src/footer.php";
exit;
}
$email=$_SESSION['email'];
$sql = "UPDATE users SET name='".mysql_real_escape_string($name)."',
info=
'".mysql_real_escape_string($info)."',
password=".mysql_real_escape_string($password2)."'
place_of_birth='".mysql_real_escape_string($place_of_birth)."',
date_of_birth='".mysql_real_escape_string($date_of_birth)."',
nationality='".mysql_real_escape_string($nationality)."'
WHERE email ='$email'";
$retval = mysql_query($sql,$link);
if (!$retval|| $retval==false) {
include "src/header.php";
include "src/mainmenu.php";
die('Could not update data: ' . mysql_error());
echo '<p><a href="EditProfile.php">Try again</a></p>';
include "src/footer.php";
mysql_close($link);
exit;
}
else {
echo "Updated data successfully\n";
//header('Location: private.php');
}
mysql_close($link);
}
else
{
include("db.php");
$email=$_SESSION['email'];
$run = mysql_query("select * from users where email='$email'") or die("Error!");
$read = mysql_fetch_assoc($run);
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<fieldset>
<legend>Update Profile</legend>
<p>
<label for="name">Full name:</label> <input type="text" name="name"
id="name" value="<?PHP echo $read['name']; ?>"/>
<br>
<label for="email">Email:</label> <input type="email" name="email"
id="email" value="<?PHP echo $read['email']; ?>"/>
<br>
<label for="password1">Password:</label> <input type="password"
name="password1" id="password1" />
<br>
<label for="password2">Confirm password:</label> <input type="password"
name="password2" id="password2" />
<br>
<label for="date_of_birth">Date of birth (yyyy-mm-dd):</label> <input
type="date" name="date_of_birth" id="date_of_birth" value="<?PHP echo
$read['date_of_birth']; ?>"/>
<br>
<label for="place_of_birth">Place of birth:</label> <input type="text"
name="place_of_birth" id="place_of_birth" value="<?PHP echo $read['place_of_birth']; ?
>"/>
<br>
<label for="info">Information:</label> <textarea name="info" id="info"
rows="5" cols="50" ></textarea>
<br>
<label for="nationality">Nationality:</label> <input type="text" ,
name="nationality" id="nationality" value="<?PHP echo $read['nationality']; ?>"/>
</p>
<p class="center"><input value="Update" type="submit" name="update" id="update"/>
</p>
</fieldset>
</form>
<?php
}
?>
答案 0 :(得分:1)
你的代码在这里错了;
password=".mysql_real_escape_string($password2)."'
随之改变;
password='".mysql_real_escape_string($password2)."',
答案 1 :(得分:0)
将$date
存储在MySQL数据库的datetime
字段中时,需要使用date('Y-m-d H:i:s')
格式对其进行格式化。