问:我有PHP MySQL函数,我需要将ID号从一个函数传递给另一个函数,并且每个函数在不同的页面中调用。我正在使用URL传递变量。我不知道这是否可行,但是我可以使用会话以安全的方式传递id以便用户无法操纵URL变量吗?
功能1:
function select_all_majors() {
global $connection;
try {
$output = "";
$output .= "<ul class=\"\">";
$sql = "SELECT * FROM `majors`";
$statement = $connection -> prepare($sql);
$statement -> execute();
while ($results = $statement -> fetch(PDO::FETCH_ASSOC)) {
$major_id = $results["major_id"];
$major_name = $results["major_name"];
$output .= "<li>";
$output .= "<a href=\"subjects.php?major_id = ";
$output .= urlencode($major_id) ;
$output .= "\">";
$output .= htmlentities($major_name);
$output .= "</a>";
$output .= "</li>";
}
$output .= "<ul>";
echo $output;
return $results;
} catch(PDOException $error) {
$sql_error = $error -> getMessage();
echo "<h4>" . $sql_error . "</h4>";
}
}
功能2:
function find_subjects_for_major() {
global $connection ;
//SELECT * FROM `subjects` WHERE `subjects`.`major_id` = 2
try {
$output = "";
$query = "SELECT * FROM `subjects`";
$query.= " WHERE `subjects`.`major_id` = 2";
$statement = $connection->prepare($query);
$output .= "<ul>";
$statement->execute();
while($results = $statement->fetch(PDO::FETCH_ASSOC)){
$language_id = $results["subject_id"];
$language_name = $results["subject_name"];
$output .="<li>";
$output .="<a href =\"courses.php\">"; //?id={$language_id}//test.php?languege_id="{echo $result["language_id"];}
$output .= htmlentities($language_name)."</li>";
$output .="</a>";
$output .="</li>";
}
$output .= "</ul>";
echo $output ;
return $results;
} catch(PDOException $error) {
$sql_error = $error -> getMessage();
echo "<h4>" . $sql_error . "</h4>";
}
}
答:这两个文件的第一行必须为:
1. <?php
2. session_start()
比您可以使用$ _SESSION [“ id”] = $ id; 从
第二个函数$ id = $ _SESSION [“ id”]中的函数1(在函数1中);或者您可以使用POST(与GET相同,但在网址中不可见)