【问题标题】:Update a mysql table with session generated information使用会话生成的信息更新 mysql 表
【发布时间】:2016-03-17 16:21:50
【问题描述】:

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

<?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);

?>

【问题讨论】:

  • $_SESSION['currID']的值是多少
  • 好吧,因为 $_SESSION['currID']= @mysqli_insert_id($link) 我想我虽然这是需要的,但它是参与者 ID 的编号?我不知道现在的确切数字是多少,因为它是前一个参与者 ID 号的 +1。我被告知的是,我需要“编写适当的代码来更新有关性别、年龄、电子邮件和评论的记录”。

标签: php mysql session


【解决方案1】:

好吧,在回答您的问题之前,您需要遵守以下一些编码规则: 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。这是您将用来告诉您的数据库引擎您要更新哪一行的密钥,因为如果不是,“他”将不知道“他”应该更新哪一行(我将数据库引擎视为像我这样的人并且你 ) 因此,您需要在会话中注入该密钥(帐户 ID 或其他),以便稍后在更新数据库时通过告诉您 db 引擎“他”需要更新由该密钥标识的行来使用。

【讨论】:

  • 啊,非常感谢,我已经删除了我能找到的所有不需要的代码,但恐怕我不知道如何将 ID 密钥注入我的代码中?我想我认为放入 $currID= $_SESSION['currID'];是解决它的方法,所以我发现它有点令人困惑! currID 应该是完成调查的人的 ID 号,每完成一次新的调查就会增加 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多