php - 使用 session 生成的信息更新 mysql 表

标签 php mysql session

我目前正在大学学习网络编程模块,但在完成一些家庭作业时遇到了麻烦。我们打算插入代码,用新信息(性别、年龄、电子邮件、评论)更新我们当前的 mysql 表。此信息需要插入到每个人 session 生成的 ID (currID) 的行中。我们如何编码将更新的信息插入到特定于 session 的行中?

<?php
session_start();
include('muqHeader.html');
include('commonSrc.php');
include('../shareCode/mysqlLink.php');

if ($_SERVER['REQUEST_METHOD'] == 'POST'):
// update the mf record 

if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){
 }else{
     echo "Not a valid email address"; 
 }

if(filter_var($_POST['comment'], FILTER_SANITIZE_STRING)){
}else{
    echo "Text includes invalid characters";   
}

$gender = $_POST['gender'];
$age = $_POST['age'];
$email = $_POST['email'];
$comment = $_POST['comment'];
$currID = $_SESSION['currID'];

if ($_POST['submit']){
$sql = "UPDATE muq
        SET (gender='$gender', age = '$age', email = '$email', comment =                 '$comment')
        WHERE (muqID = '$currID')"; 
}

    if (@mysqli_query($link, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . @mysqli_error($link);
}

else:

$useTime = implode(',', $_SESSION['useTime'] );
$usedM = implode( ',', $_SESSION['usedM'] );
$tmp = array();
for($i=0; $i < count($_SESSION['freqRate']); $i++) {
$tmp[$i] = implode( '', $_SESSION['freqRate'][$i] ); // empty string as     'glue'
}
$freqRate = implode( ',', $tmp );
$dateTime = $_SESSION['dateTime'];
$taskTime = (time() - $_SESSION['startTime']) / 60;   //in minutes
$sql = "INSERT INTO muq
    (dateTime, taskTime, useTime, usedM, freqRate)
    VALUES ('$dateTime', '$taskTime', '$useTime', '$usedM', 'freqRate')";
$link = connectDB();
@mysqli_query( $link, $sql );
$_SESSION['currID'] = @mysqli_insert_id($link);
@mysqli_close($link);

?>

最佳答案

嗯,在回答你的问题之前,这里有一些你需要遵守的编码规则: 1-您不必使用比您需要的更多的线路。这意味着如果可以在 2 行中完成,则不必使用 4 行来执行空的“if”。 例子: 而不是:

if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){
}else{
   echo "Not a valid email address"; 
}

你可以这样做:

if (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))
    echo "Not a valid email address";

第二,要更新数据库中的行,您需要一个 ID。这是你要用来告诉你的数据库引擎你要更新哪一行的键,因为如果不是,“他”将不知道“他”应该更新哪一行(我正在考虑像我这样的人的数据库引擎和你 ) 因此,您需要在 session 中注入(inject)该 key (帐户 ID 或其他),以便稍后在更新数据库时告诉您数据库引擎“他”需要更新由该 key 标识的行。

关于php - 使用 session 生成的信息更新 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066247/

相关文章:

php - 在 Symfony v4.2 中将带有数据的数组传递给 ChoiceType (html select)

php - cURL 不适用于标签

php - 检测同时上传进程

java - 在 jsf 2 中处理用户 session

java - 对象内部的属性在 session 中消失,但 Bean 本身不会消失

PHP shell_exec() 与 exec()

php - 类方法和常规函数之间有什么区别吗?

MySQL 在没有 GROUP BY 子句的情况下中断

mysql - 如何使用子查询?

显示左表的 SQL 连接,即使右表与 where 不匹配