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']
希望此解决方案对您有所帮助。
请点击这个答案是有用的。
我目前正在创建一个数据库,其中包含用于一般基于文本的搜索的搜索框,并以表格格式提供搜索。实际数据是 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']
希望此解决方案对您有所帮助。 请点击这个答案是有用的。