用php更新MySQL数据表

用php更新MySQL数据表,php,html,mysql,forms,Php,Html,Mysql,Forms,我正在为一个客户端做一个简单的项目,但我无法通过mysql中的数据编辑和更新。以下是从编辑提交表单传递的我的代码: updateinfo.php <?php $con = mysqli_connect("localhost", "user", "password", "db"); if (mysqli_connect_errno()){ echo "Failed to connect to MySql: " . mysqli_connect_error(); } $id = $ro

我正在为一个客户端做一个简单的项目,但我无法通过mysql中的数据编辑和更新。以下是从编辑提交表单传递的我的代码:

updateinfo.php

<?php
$con = mysqli_connect("localhost", "user", "password", "db");
if (mysqli_connect_errno()){
  echo "Failed to connect to MySql: " . mysqli_connect_error();
}
  $id = $row['id'];
  $fname = $row['firstName'];

$sql = "UPDATE  `db`.`client_information` SET  `firstName` =  '$fname' WHERE  `client_information`.`id` = '$id'";
mysqli_query($con, $sql);
echo "Updated!";
mysqli_close($con);
?>

向下滚动并开始阅读其中的新答案。
如果您的php代码在同一个页面中,您需要像这样更改表单操作

<input type="text" value="<?php echo $id;?>" class="form-control" id="id" name="id">

<input type="text" value="<?php echo $fname;?>" class="form-control" id="fname" name="fname">
如果不是,就让它像你拥有的那样

<form role="form" action="" method="post">
像这样做第二个feild

$id=$_POST['id'];
$fname=$_POST['fname'];
新答案

我们昨天错过的唯一一件事。您正在使用禁用字段集。用于输入字段。去掉这个。您的查询代码和查询应该可以工作。请参阅下面的代码。别忘了更改连接信息,因为我的连接信息与你的不同

因为我假设您不希望用户更改其id。只需在输入中使用隐藏属性。不禁用

更新一个

<?php
//you may have to change the value in connection variable. 
$con = mysqli_connect("localhost", "root", "", "db");
if (mysqli_connect_errno()){
  echo "Failed to connect to MySql: " . mysqli_connect_error();
}
  $id = $_POST['id'];
  $fname = $_POST['fname'];



$sql = "UPDATE  `db`.`client_information` SET  `firstName` =  '$fname' WHERE  `client_information`.`id` = '$id'";
mysqli_query($con, $sql) or  mysqli_error($con);
echo "Updated!";
mysqli_close($con);
?>

尝试一下,看看这是否是您想要的,它是否有效。因为某种原因我不能让你的工作

它将首先查询您的数据库,然后您可以立即编辑您喜欢的数据库

N.B.:只能更新现有数据,不能添加或删除

我修改了我在网上找到的一个现有脚本,该脚本有一些缺少的部分使其工作

这些列用于以下用途:

  • 身份证
  • 名字
  • 姓氏
  • 电子邮件
HTML/PHP/SQL(update.PHP)


Id
名称
Lastname
电子邮件

您需要循环初始查询以获取行。您遇到了什么问题?你需要更具体一些。有什么错误吗?只是没有更新吗?我的问题又补充了一点@Arif_suhail_123我不确定表格中是否有任何内容。@Nathan我不确定是否有任何内容通过或如何检查。帮助?:)@Fred ii-我在表单中进行了循环。$\u GET['id']似乎从以前的表单中选择了id。好的,clientedit.php似乎是leeds更新info.php的文件(根据表单操作)。当他在clientedit.php中选择id='$id'时,它必须来自以前的表单或get传输。因此我更改了所有内容,但没有在数据库中更新,而是完全删除了字段。我很困惑。啊哈。。。在添加错误报告后,我收到了这样一条消息:“注意:第10行的/var/www/html/updateinfo.php中的未定义索引:firstName。目前,我正在选择一个id进行操作,但稍后希望将其添加到“编辑”中“动态表单。如果您在client.php中获得$id值,则无需更改任何内容。如我所说,你只需更改表格即可。在解决方案中。第二,您将获得未定义的索引frstname;我会在信中告诉你为什么你会得到这个。更改论坛中的输入字段后。通过表格告诉你想做什么。意思是当每个人都提交表格时。如果您想这样做,您需要在
updateinfo.php
中运行更新查询。让我知道。我也会告诉你你的错误。请记住,在client.php中不需要对原始代码进行任何更改。仅输入字段
<?php
//you may have to change the value in connection variable. 
$con = mysqli_connect("localhost", "root", "", "db");
if (mysqli_connect_errno()){
  echo "Failed to connect to MySql: " . mysqli_connect_error();
}
  $id = $_POST['id'];
  $fname = $_POST['fname'];



$sql = "UPDATE  `db`.`client_information` SET  `firstName` =  '$fname' WHERE  `client_information`.`id` = '$id'";
mysqli_query($con, $sql) or  mysqli_error($con);
echo "Updated!";
mysqli_close($con);
?>
<?php
//again you might have to change connection value in the below line
$con = mysqli_connect("localhost", "root", "", "db");
if (mysqli_connect_errno()){
echo "Failed to connect to MySql: " . mysql_connect_error();
}
$id=$_GET['id'];
$result = mysqli_query($con, "SELECT * FROM `client_information` WHERE id='$id'");
while ($row = mysqli_fetch_array($result)){
  $id = $row['id'];
  $fname = $row['firstName'];
}
mysqli_close($con);
?>
<?php include 'header.php';?>
<form role="form" action="updateinfo.php" method="post">
<div class="col-md-4">
    <fieldset >
  <div class="form-group">
    <label for="id">ID</label>
    <input type="text" value="<?php echo $id;?>" class="form-control" id="id" name="id">
  </div>
  </fieldset>
  <div class="form-group">
    <label for="fname">First Name</label>
    <input type="text" value="<?php echo $fname;?>" class="form-control" id="fname" name="fname">
  </div>
<button type="submit" class="btn btn-default">Submit</button>
</div>
</form>
<?php include 'footer.php';?>
<?php
$DB_HOST = "xxx";
$DB_NAME = "xxx";
$DB_USER = "xxx";
$DB_PASS = "xxx";

$con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($con->connect_errno > 0) {
  die('Connection failed [' . $con->connect_error . ']');
}

$sql="SELECT * FROM `your_table`";
$result=mysqli_query($con,$sql);

// Count table rows
$count=mysqli_num_rows($result);
?>

<table width="500" border="0" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="">
<tr>
<td>
<table width="500" border="0" cellspacing="1" cellpadding="0">

<tr>
<td align="center"><strong>Id</strong></td>
<td align="center"><strong>Name</strong></td>
<td align="center"><strong>Lastname</strong></td>
<td align="center"><strong>Email</strong></td>
</tr>

<?php
while($rows=mysqli_fetch_array($result)){
?>

<tr>
<td align="center">
<?php $id[]=$rows['id']; ?><?php echo $rows['id']; ?>
</td>
<td align="center">
<input name="name[]" type="text" id="name" value="<?php echo $rows['firstName']; ?>">
</td>
<td align="center">
<input name="lastname[]" type="text" id="lastname" value="<?php echo $rows['lastName']; ?>">
</td>
<td align="center">
<input name="email[]" type="text" id="email" value="<?php echo $rows['email']; ?>">
</td>
</tr>

<?php
}
?>

<tr>
<td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>

<?php

if(isset($_POST['Submit'])){

for($i=0;$i<$count;$i++){

// these variables were missing from the tutorial. Not having those made entries blank when doing the UPDATE.
$email = $_POST['email'];
$name = $_POST['name'];
$lastname  = $_POST['lastname'];

$sql1="UPDATE `your_table` SET firstName='".mysqli_real_escape_string($con, stripslashes($name[$i]))."', lastName='".mysqli_real_escape_string($con, stripslashes($lastname[$i]))."', email='".mysqli_real_escape_string($con, stripslashes($email[$i]))."' WHERE id='".mysqli_real_escape_string($con, stripslashes($id[$i]))."'";

// Old unsecure method. Do not use mysqli_real_escape_string and/or stripslashes as predefined variables, it won't work
// $sql1="UPDATE `your_table` SET firstName='$name[$i]', lastName='$lastname[$i]', email='$email[$i]' WHERE id='$id[$i]'";
$result1=mysqli_query($con,$sql1);
   }
}

if($result1){
    header("location: update.php");
}
mysqli_close($con);
?>