我有一个看起来像这样的表:
name surname username password role
student student student@csd.auth.gr student student
student2 student2 student2@csd.auth.gr student2 student
我希望能够在 php 中编辑一行。 这些值取自如下 html 文件:
用户名
student2@csd.auth.gr <--这将写在一个文本框中
密码
student2 <--这将写在一个文本框中
姓名
student2 <--这将写在一个文本框中
姓氏
student2 <--这将写在一个文本框中
角色
student <--这将写在一个文本框中
我的 php 文件是:
<?php
$hostname = "localhost";
$database = "mydb";
$username = "myuser";
$password = "mypsw";
$link = mysql_connect( $hostname , $username , $password ) or
die("Prosoxi!Provlima stin sundesi me ton server : " . mysql_error());
mysql_select_db($database,$link);
mysql_query("UPDATE user
SET username = '".mysql_real_escape_string($_POST[nusername])."',
SET password = '".mysql_real_escape_string($_POST[npassword])."',
SET name = '".mysql_real_escape_string($_POST[nname])."',
SET surname = '".mysql_real_escape_string($_POST[nsurname])."',
SET role = '".mysql_real_escape_string($_POST[nrole])."'
WHERE username='".mysql_real_escape_string($_POST[us])."'");
mysql_close($link);
header("Location: users.php");
?>
1.更新没有发生,所以 php 文件有问题,我找不到。
<强>2。如果我选择某个用户名,如何在 html 文件中使用正确的值实现已填充的框?
有人可以帮助我吗?先感谢您。 :)
最佳答案
这里发生了很多事情。
始终将整数用作主键,例如:id MEDIUMINT NOT NULL AUTO_INCREMENT。然后将其设为主键。
您需要使用
清理您对数据库的输入mysql_real_escape_string()
您需要连接您的查询,因此它应该如下所示:
mysql_query("更新用户 SET username = '".mysql_real_escape_string($_POST[nusername])."' SET password = '".mysql_real_escape_string($_POST[npassword])."' SET name = '".mysql_real_escape_string($_POST[nname])."' SET surname = '".mysql_real_escape_string($_POST[nsurname])."' SET role = '".mysql_real_escape_string($_POST[nrole])."' WHERE username='".mysql_real_escape_string($_POST[us])."'");
修改后的代码:
<?php
$hostname = "localhost";
$database = "mydb";
$username = "myuser";
$password = "mypsw";
$link = mysql_connect( $hostname , $username , $password ) or
die("Prosoxi!Provlima stin sundesi me ton server : " . mysql_error());
mysql_select_db($database,$link);
mysql_query("UPDATE user
SET username = '".mysql_real_escape_string($_POST['nusername'])."',
SET password = '".mysql_real_escape_string($_POST['npassword'])."',
SET name = '".mysql_real_escape_string($_POST['nname'])."',
SET surname = '".mysql_real_escape_string($_POST['nsurname'])."',
SET role = '".mysql_real_escape_string($_POST['nrole'])."'
WHERE username='".mysql_real_escape_string($_POST['us'])."'");
mysql_close($link);
header("Location: users.php");
?>
注意 _POST 变量 $_POST['nusername'] 周围的单引号,你有 $_POST[nusername]。
现在试试,看看它是否更新。
关于php - 在php中更新一行mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9304794/