php 中 php 中半数分解数组的未定义偏移错误

Undefined offset error in php for half the exploded array in php

我目前正在创建一个数据库,其中包含用于一般基于文本的搜索的搜索框,并以表格格式提供搜索。实际数据是 17 列,但搜索结果只给出 5 列。 5 列中的一列向另一页提供 link,该页提供其余列的所有数据。我页面显示 5 列的 php 代码是 -

 <?php

$con = new mysqli("localhost","root","","project");

if(!$con){
    die("Database not found" .$con->connect_error);
}

$sw=$_POST['query'];

$sql= "SELECT * FROM ps1 WHERE Entry like '%".$sw."%' OR Prot_name like '%".$sw."%' OR Gene_name like '%".$sw."%' OR Function like '%".$sw."%' OR Org_name like '%".$sw."%'";
$res=mysqli_query($con,$sql);

$number=mysqli_num_rows($res);

echo "<h2>".$number."hits found</h2>";


echo"<br><table class='col3' border=1>
<tr><th>Uniprot ID
</th><th>Entry Name
</th><th>Protein name
</th><th>Gene name
</th><th>Sequence length
</th><th>Organism name
</th><th>Sequence
</th></tr>";

if(mysqli_num_rows($res) > 0)
{
while($row=mysqli_fetch_assoc($res))
    {
    echo "<tr>";
    echo "<td><a href=\"Fullentry.php?rowid=id".$row['Entry']."|".$row['Entry_name']."|".$row['Prot_name']."|".$row['Gene_name']."|".$row['Taxonomic_lineage']."|".$row['Org_name']."|".$row['Length']."|".$row['Subcellular_loc']."|".$row['Intramembrane']."|".$row['Topology']."|".$row['Transmembrane']."|".$row['Function']."|".$row['GO']."|".$row['Cross_ref']."|".$row['Pubmed_ID']."|".$row['Interpro']."\">ENTRY</a></td>";
    echo "<td>" . $row['Entry_name'] . "</td>";
    echo "<td>" . $row['Prot_name'] . "</td>";
    echo "<td>" . $row['Gene_name'] . "</td>";
    echo "<td>" . $row['Length'] . "</td>";
    echo "<td>" . $row['Org_name'] . "</td>";
    echo "<td><a href=\"Sequence.php?rowid=" . $row['Entry']."|".$row['Sequence'] . "\">FASTA SEQUENCE</a></td>";
    echo "</tr>";
    }
}

基本上我在这里所做的是,我使用 | 运算符将 table 中的所有列拆分并压缩为单个 href link .显示来自 link 的数据的下一页是 -

<?php

/*Get the previous page data into the variable */

$row = $_GET['rowid'];

/*Explode using the marker*/

$row = explode("|", $row);

/*Check if all indices are present*/

print_r($row);

/*Printing all the data from the previous page*/

echo "<h3>Entry for".$row[0]."</h3>";

echo "<h4>Uniprot ID</h4>";
echo "<h4>".$row[0]."<h4>";
echo "<br><h4>Entry name from Uniprot</h4>";
echo "<h4>".$row[1]."<h4>";
echo "<br><h4>Protein name</h4>";
echo "<h4>".$row[2]."</h4>";
echo "<br><h4>Gene name</h4>";
echo "<h4>".$row[3]."</h4>";
echo "<br><h4>Taxonomic Lineage</h4>";
echo "<h4>".$row[4]."</h4>";
echo "<br><h4>Organism name</h4>";
echo "<h4>".$row[5]."</h4>";
echo "<br><h4>Sequence length</h4>";
echo "<h4>".$row[6]."</h4>";
echo "<br><h4>Subcellular location</h4>";
echo "<h4>".$row[8]."</h4>";
echo "<br><h4>Intramembrane</h4>";
echo "<h4>".$row[9]."</h4>";
echo "<br><h4>Topology</h4>";
echo "<h4>".$row[10]."</h4>";
echo "<br><h4>Transmembrane</h4>";
echo "<h4>".$row[11]."</h4>";
echo "<br><h4>Function</h4>";
echo "<h4>".$row[12]."</h4>";
echo "<br><h4>GO-terminologies</h4>";
echo "<h4>".$row[13]."</h4>";
echo "<br><h4>Cross references</h4>";
echo "<h4>".$row[14]."</h4>";
echo "<br><h4>Pubmed ID</h4>";
echo "<h4>".$row[15]."</h4>";
echo "<br><h4>Interpro ID</h4>";
echo "<h4>".$row[16]."</h4>";
echo "<br><h4>Protein Sequence</h4>";
echo "<h3>".$row[7]."</h3>";

?>

这个页面所做的是,它找到 | 并在 explode 函数的帮助下给出索引。 但我的问题是我只从索引中获得前 4 个值。我想要的是我需要显示来自第一页的早期传递值的所有 17 个值。关于为什么只解析第一个值而不解析其余值的任何帮助将不胜感激?而且,如果有任何解决方案,我们将不胜感激。先感谢您! PS - 我浏览了很多 PHP 文档以及几乎所有与 'Undefined offset error in php' 相关的问题,但我找不到与我的问题相关的任何问题。如有重复,敬请见谅。

参考您发布的第一个片段,$_GET 接收 URL 对您传递的字符串长度有限制。确保你不应该超过限制。 请参阅下面的 link 以获得更多说明。希望对你有帮助。

Max size of URL parameters in _GET

P.S - 如果您能向我展示您的第一个片段的完整代码,也许我能为您提供更多帮助。

已在此处编辑-

首先,非常感谢您为第一个片段提供完整代码所做的努力。 使用以下逻辑将条目发送到 fullentry.php 页面。

echo "<td><a href=\"Fullentry.php?rowid=".$row['Entry']."\">ENTRY</a></td>";

现在,获取 fullentry.php 文件中的条目值,然后使用以下代码获取数据并显示在 html 上。

$entry = $_GET['rowid'];
$sql= "SELECT * FROM ps1 WHERE Entry like '%".$entry."%'";
$res=mysqli_query($con,$sql);

使用 $res 对象,您可以简单地从数据库中获取数据,就像您在第一个片段中所做的那样。 像- $res['Entry_name'] , $res['Prot_name']

希望此解决方案对您有所帮助。 请点击这个答案是有用的。