无法在 PHP 中显示具有不同链接的多个结果
Posted
技术标签:
【中文标题】无法在 PHP 中显示具有不同链接的多个结果【英文标题】:Cannot Display multiple results with different links In PHP 【发布时间】:2018-02-27 21:37:24 【问题描述】:我尝试使用其他方式但结果只显示一个链接编辑,因为我有 3 种数据/3 个人,编辑链接只显示给一个人。我想放置 3 个具有相同姓氏的编辑链接,稍后将在数据库中更新。
$mysqli = new mysqli("localhost","root","","logindb");
$search = $mysqli->real_escape_string($_POST['search']);
$resultSet = $mysqli->query("SELECT * FROM precferm WHERE lname LIKE '$search%'");
if( $resultSet->num_rows > 0)
while($rows = $resultSet->fetch_assoc())
$lname = $rows ['lname'];
$fname = $rows ['fname'];
$mname = $rows ['mname'];
$output = " <a href=edit.php?id=$output> Edit</a><br /> Last Name: $lname<br />First Name: $fname<br />Middle Name: $mname<br /><br />";
else
$output = "No results";
【问题讨论】:
这段代码令人困惑: 1. $output 变量是做什么的?为什么它被用作身份证? 2. 如果要显示三个链接,为什么不将字符串与其他链接连接起来呢? 3. 能发一下完整的sn-p吗? 你在每次循环迭代中覆盖$output
,所以在循环之后只有最后一个值“存活”。如果要获取所有三个记录的此类链接,则需要 附加 到变量(在循环之前使用空字符串初始化)。
你能给我看看 fetch_assoc() 函数吗?
【参考方案1】:
如CBroe in comments所述:
你在每次循环迭代中覆盖
$output
,所以在循环之后只有最后一个值“存活”。如果要获取所有三个记录的此类链接,则需要 追加 到变量(在循环之前使用空字符串初始化)。
所以: 您可以使用PHP String operator 附加字符串,使您的字符串在循环的每次迭代中包含更多数据。
我还使用"string".$var." more string"
来说明另一种类型的字符串运算符(连接)(以及带有字符串设置的变量的最佳实践)。
$output = ""; // ensure value starts empty.
if( $resultSet->num_rows > 0)
while($rows = $resultSet->fetch_assoc())
$lname = $rows ['lname'];
$fname = $rows ['fname'];
$mname = $rows ['mname'];
// note the .= appends data to the original $output
$output .= " <a href=edit.php?id=".$output."> Edit</a><br /> Last Name: ".$lname."<br />First Name: ".$fname."<br />Middle Name: ".$mname."<br /><br />";
else
// note the .= appends data to the original $output
$output .= "No results";
print $output // This will now output all itterations of the MySQL data loop.
注意
<a href=edit.php?id=".$output.">
这是将整个字符串 ($output
) 添加到 id GET 子句,并且不正确。您在这里想要的是某种id
计数器;比如
<a href=edit.php?id=".$rows['id'].">
【讨论】:
我试过这个,但结果每个人都成倍/翻了一番。 id=" .$output. "> 中有什么东西使结果翻了一番? @Mark 我的 NOTE 解释了这个问题吗?【参考方案2】:问题是你链接到一个 id 不正确的页面,你应该用数字指定链接来编辑行,我只是添加了 $id 来路由到正确的页面。祝你好运
if( $resultSet->num_rows > 0)
while($rows = $resultSet->fetch_assoc())
$lname = $rows ['lname'];
$fname = $rows ['fname'];
$mname = $rows ['mname'];
$id = $row['id'];
$output = " <a href='edit.php?id=$id'> Edit</a><br /> Last Name: $lname<br />First Name: $fname<br />Middle Name: $mname<br /><br />";
else
$output = "No results";
【讨论】:
如果您正在回答问题的朋友,请告诉问题。只是说一些问题不是答案,您需要在代码中使用注释或描述中的注释来描述代码中的问题。 问题是你链接到一个不正确的 id 页面,你应该用数字指定链接来编辑行,我只是添加了 $id 来路由到正确的页面。祝你好运 我不是第二个你应该在答案中而不是在 cmets 中这样做的海报。 问题是结果,只提供了1个超链接,其他结果编辑链接不启用超链接。【参考方案3】:您似乎需要为 URL 提供 id
值:
if( $resultSet->num_rows > 0)
while($rows = $resultSet->fetch_assoc())
$id = $rows['id'];//something like this
$lname = $rows['lname'];
$fname = $rows['fname'];
$mname = $rows['mname'];
$output = " <a href=edit.php?id=$id> Edit</a><br /> Last Name: $lname<br />First Name: $fname<br />Middle Name: $mname<br /><br />";
else
$output = "No results";
【讨论】:
我试过这个,我得到了一个不同的错误:解析错误:语法错误,意外的'$fname'(T_VARIABLE) @Mark 你最后忘了你的;
吗?
我认为这是您在引用的错误文本上方的行尾缺少分号时遇到的错误。但是我不知道edit.php
页面的第一个参数需要什么样的id
。我提供的代码只是一个示例 - 您需要的 ID 可能在其他地方。
@Martin 不,我已经检查过我是否遗漏了一些分号。以上是关于无法在 PHP 中显示具有不同链接的多个结果的主要内容,如果未能解决你的问题,请参考以下文章
在输入'php artisan storage:link'命令后,如何使用Laravel链接存储文件夹在Heroku上显示图像?