我有一个庞大的多步骤表单,其中包含mysql db中多个表的数据。对于每个字段我的html就像 -
input type="text" name="names" value="" // value set using php echo
在php上提交我正在为表单的所有字段执行此操作 -
$name=$_POST['names'] ?? ' '
然后我更新我的第一个表并写入更新后的日志。
$query=mysqli_query($con,"UPDATE teacherpersonal set name='$name' ... where id=$id");
write_mysql_log("teacherpersonal updated", "facultydetails", $id).
我已定义write_mysql_log
。
同样,我使用更新的值或空白(""
)值更新所有剩余的表。
由于您可以看到即使字段未更改,也始终执行更新查询。因此,始终记录表的更新。但这不是我想要的。我想只更新表中那些已更改并保持不变的字段,并仅记录那些更新的表。许多表格不会以这种方式更新,因为用户可能只会更改一些细节。
使用jquery和php。
我的write_mysql_log是
function write_mysql_log($message, $db, $faculty_id)
{
$con=mysqli_connect("localhost","root","");
mysqli_select_db($con,"facultydetails");
// Construct query
$sql = "INSERT INTO my_log (message, faculty_id) VALUES('$message', '$faculty_id')";
$query=mysqli_query($con, $sql);
// Execute query and save data
if($query) {
echo 'written to the database';
}
else {
echo 'Unable to write to the database';
}
}
答案 0 :(得分:0)
这可以通过两种不同的方式实现。 1)在jQuery的帮助下检查更新的值,仅将这些值发布到php脚本 2)在更新检查时,使用基于该标准的更新的当前值更新数据库表。
解决方案1将处理过程与另一个进行比较的时间较短。
答案 1 :(得分:0)
您只需要更新用户编辑的值,通过这样做就可以实现它;
$oldvalue = array("username" => "green", "email" => "green@mail.com","dob" => "111");
$newvalue = array( "email" => "green@mail.com","dob" => "111","username" => "blue");
$updates = array_diff($newvalue, $oldvalue);
$implodeArray = implode(', ', $updates);
$sql = ("UPDATE user WHERE userID=$userID SET $implodeArray");
mysql_query($sql,$this->_db) or die(mysql_error());
mysql_close();
输出:
$updates = array_diff($newvalue, $oldvalue);
将:
Array ( [username] => blue )
更改了一个
答案 2 :(得分:0)
在考虑了很多选项之后好了 -
所以最后我做的是让表格提交所有数据。早些时候我把PHP中的数据作为$ name = $ _ POST [' names'] ?? ' ' (如果没有提交任何内容或者提交的内容然后是其值,则为空白)。