我在网上看到过这样的例子,但它似乎只是破坏了我的代码。我希望能够使用以下代码将查询的字段存储在会话变量中。
PHP:
<?php
// Collect input
// If an input has been given
if(isset($_POST["aSearch"])) {
$searchq = $_POST["aSearch"];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq); //Can only search words
// Select records if name's match
$sql = "SELECT * FROM birdt WHERE birdName LIKE '%$searchq%'";
}
// Tests if connection is made to the db to query it
if ($conn->query($sql)=== TRUE){
echo "The rows you have searched for are:";
} else {
echo "Connection failed: ";
echo $conn->error;
}
// Show fields
$result = $conn->query($sql);
// Output data of each row
if ($result-> num_rows> 0) {
readfile("ViewReturn.html");
while($row = $result-> fetch_assoc()) {
// redirect the user to a new page
echo "<a href='sort.php'> Bird Name: ".$row["birdName"]. "</a><br><br>"; // Important row
}
} else {
echo "0 results";
}
?>
此代码可用于根据用户输入从数据库返回值。它将返回"birdName",并允许用户单击查询结果以转到"sort.php"页面。
如何在会话变量中单击返回字段"birdName"之前将其存储一次,以便在下一页中访问?
附言:我知道我的问题非常具体和独特,但我很难把它付诸实施,我非常绝望,谢谢。
在脚本的开头,您需要放置
session_start();
然后,通过将数据库中的每个鸟名推送到一个数组中,可以将数组中的所有鸟名保存在会话变量中。
$_SESSION['birdNames'] = array();
if ($result-> num_rows> 0) {
readfile("ViewReturn.html");
while($row = $result-> fetch_assoc()) {
// redirect the user to a new page
$_SESSION['birdNames'][] = $row['birdName'];
echo "<a href='sort.php'> Bird Name: ".$row["birdName"]. "</a><br><br>"; // Important row
}
} else {
echo "0 results";
}
然后,sort.php
可以使用session_start();
来继续会话,并访问$_SESSION['birdNames']
来获取所有的鸟名。
然而,我怀疑这并不是你真正想要的。如果你想让sort.php
只处理用户点击的特定鸟名,你不应该使用会话变量,它应该是一个URL参数。
echo "<a href='sort.php?id=" . $row["id"] . "'> Bird Name: ".$row["birdName"]. "</a><br><br>";
然后sort.php
可以使用$_GET['id']
来获取用户点击的鸟的ID。