我目前正在大学学习网络编程模块,但在完成一些家庭作业时遇到了麻烦。我们打算插入代码,用新信息(性别、年龄、电子邮件、评论)更新我们当前的 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/