PHP更新表中的行
您好,我在这里遇到一些问题,我创建了一个脚本来更新用户帐户详细信息,但当填写表单并单击提交按钮时,不会出现错误,但同时表中没有任何更改 这只是一个虚拟应用程序,所以一切都是基本的PHP更新表中的行,php,mysql,Php,Mysql,您好,我在这里遇到一些问题,我创建了一个脚本来更新用户帐户详细信息,但当填写表单并单击提交按钮时,不会出现错误,但同时表中没有任何更改 这只是一个虚拟应用程序,所以一切都是基本的 <?php session_start(); include('connect_mysql.php'); if(isset($_POST['update'])) { $usernameNew = stripslashes(m
<?php
session_start();
include('connect_mysql.php');
if(isset($_POST['update']))
{
$usernameNew = stripslashes(mysql_real_escape_string($_POST["username"]));
$passwordNew = stripslashes(mysql_real_escape_string($_POST["password"]));
$first_nameNew = stripslashes(mysql_real_escape_string($_POST["first_name"]));
$last_nameNew = stripslashes(mysql_real_escape_string($_POST["last_name"]));
$emailNew = stripslashes(mysql_real_escape_string($_POST["email"]));
$user_id = $_SESSION['user_id'];
$editQuery = mysql_query("UPDATE users SET username='$usernameNew', password='$passwordNew', first_name='$first_nameNew', last_name='$last_nameNew' , email='$emailNew' WHERE user_id='$user_id'");
if(!$editQuery)
{
echo mysql_error($editQuery);
die($editQuery);
}
}
?>
<html>
<head>
<title>Edit Account</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<header><h1>E-Shop</h1></header>
<article>
<h1>Welcome</h1>
<h1>Edit Account</h1>
<div id="login">
<ul id="login">
<form method="post" name="editAccount" action="userEditAccount.php" >
<fieldset>
<legend>Fill in the form</legend>
<label>Select Username : <input type="text" name="username" /></label>
<label>Password : <input type="password" name="password" /></label>
<label>Enter First Name : <input type="text" name="first_name" /></label>
<label>Enter Last Name : <input type="text" name="last_name" /></label>
<label>Enter E-mail Address: <input type="text" name="email" /></label>
</fieldset>
<br />
<input type="submit" value="Edit Account" class="button">
<input type="hidden" name="update" value="update">
</form>
</div>
<form action="userhome.php" method="post">
<div id="login">
<ul id="login">
<li>
<input type="submit" value="back" onclick="index.php" class="button">
</li>
</ul>
</div>
</article>
<aside>
</aside>
<div id="footer">Text</div>
</div>
</body>
</html>
您没有在文件开头调用session\u start()
,因此$username
将是一个空字符串,而update命令将只更新用户名为空字符串的行
编辑:事实上,该代码甚至不会运行,因为您尚未调用session\u start()
,isset($\u session['update'])
将计算为false
你的意思是写$\u会话['update']
?这不应该是$\u POST['update']
最后但并非最不重要的一点是,我个人将替换以下内容:
<input name="update" type="submit" submit="submit" value="Edit Account" class="button">
为此:
<input type="submit" value="Edit Account" class="button">
<input type="hidden" name="update" value="update">
至少为了清楚起见。我不知道情况是否仍然如此,但随着时间的推移,并非所有浏览器都提交了提交按钮的名称/值。先生,根据上面给出的代码,我认为您的login.php有错误
$_SESSION['user_id'] = $user_id;
您没有为$user\u id赋值,这就是为什么它将空值设置为$\u会话['user\u id']
<?php
session_start();
require('connect_mysql.php');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$username = $_POST["username"];
$password = $_POST["password"];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$query = mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$password'");
$numrow = mysql_num_rows($query);
if($username && $password){
$query = mysql_query("SELECT * FROM users WHERE username='$username'");
$numrow = mysql_num_rows($query);
if($numrow !=0){
$user_id = 0;
while($row = mysql_fetch_assoc($query)){
$dbusername = $row['username'];
$dbpassword = $row['password'];
$user_id = $row['user_id'];
}
if($username == $dbusername && $password == $dbpassword ){
$_SESSION['user_id'] = $user_id;
header("Location: userhome.php");
}
else{
echo "Incorect password";
}
}
else{
die("This user dosent exists");
}
}
else{
$reg = die("Please enter username and password");
}
}
?>
您的PHP
代码在哪里?您还没有发布任何带有更新命令的代码。完成此操作后,仍然没有运气:/n您可以尝试通过放入die($sql)行进行调试吗?我很好奇正在执行的SQL是什么。@Tomazi将session\u start()
放在所有页面的顶部,然后再次从dologin->编辑数据开始启动流程。您的意思是写if(isset($\u session['update'])?如果(isset($\u POST['update']),这不是应该吗?好的,我做了所有建议的更改,现在我得到了这个错误:注意:未定义的索引:C:\xampp\htdocs\eshop\userEditAccount.php中的用户id在第22行您的回音将如下所示“更新用户设置username='usernamew',passwordNew='passwordNew',first\u name='first\u namew',last\u name='last\u namew',email='emailNew'其中user\u id=''。您可以看到user\u id为空,这说明查询执行中没有错误。”。
<?php
session_start();
require('connect_mysql.php');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$username = $_POST["username"];
$password = $_POST["password"];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$query = mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$password'");
$numrow = mysql_num_rows($query);
if($username && $password){
$query = mysql_query("SELECT * FROM users WHERE username='$username'");
$numrow = mysql_num_rows($query);
if($numrow !=0){
$user_id = 0;
while($row = mysql_fetch_assoc($query)){
$dbusername = $row['username'];
$dbpassword = $row['password'];
$user_id = $row['user_id'];
}
if($username == $dbusername && $password == $dbpassword ){
$_SESSION['user_id'] = $user_id;
header("Location: userhome.php");
}
else{
echo "Incorect password";
}
}
else{
die("This user dosent exists");
}
}
else{
$reg = die("Please enter username and password");
}
}
?>