无法在 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 中显示具有不同链接的多个结果的主要内容,如果未能解决你的问题,请参考以下文章

无法从具有不同深度的某些链接中解析产品名称

将数据库结果制作为 html 链接

在输入'php artisan storage:link'命令后,如何使用Laravel链接存储文件夹在Heroku上显示图像?

无法使用 Laravel (blade.php) 加载具有较长链接的样式

如何对链接到具有不同粒度级别的多个事实的维度表进行建模?

Spring批处理。如何链接具有不同类型的多个itemProcessor?