繁体   English   中英

一个href无法在我的echo PHP上运行

[英]a href not working on my echo php

嗨,我似乎无法弄清楚。 我有一张桌子,我想添加一个删除功能,这是我的代码

<?php         
$delete = "delete";
    $user = $_SESSION['hlbank_user']['user_id'];  
    $sql = "SELECT * FROM tbl_complains where user_id='".$user."' ORDER BY create_date asc ";
    $result = dbQuery($sql);
    while($row = dbFetchAssoc($result)){

      if($row['eng_id']==0){
        $engid= 'N/A';
      }else{
    $sqls = "SELECT * FROM tbl_engineer where eid='".$row['eng_id']."'";
    $results = dbQuery($sqls);
    $rows = dbFetchAssoc($results);
      $engid= $rows['ename'];
      }
      echo '<tr class="row1" style="height:25px;">
            <td align="center">'.$row['acc_no'].'</td>
            <td align="center">'.$row['comp_name'].'</td>
            <td align="center">'.$row['comp_desc'].'</td>
            <td align="center">'.$row['status'].'</td>
            <td align="center">'.'<a href='delete.php?id=".$row['user_id']."'>'.'Delete'.'</a>'.'</td>';
            //The problem is in this line. When ever i try putting a href the whole table will not show.

      echo '</tr>';

    }
?>

这是我的delete.php

<?php

if(isset($_GET['user_id'])) {
$id = $_GET['user_id'];

$con = new mysqli('localhost', 'root', '', 'db_hlbank');
$sql = 'DELETE FROM tbl_complains WHERE user_id = ?';
$delete = $con->prepare($sql);
$delete->bind_param('i', $id);
$delete->execute();

if($delete->affected_rows > 0) {
    header('Location: index.php');
}
}

?>

另一个问题:是否有一种方法可以在不调用delete.php的情况下进行集成?

非常感谢你!

这应该工作:

echo '<tr class="row1" style="height:25px;">
        <td align="center">'.$row['acc_no'].'</td>
        <td align="center">'.$row['comp_name'].'</td>
        <td align="center">'.$row['comp_desc'].'</td>
        <td align="center">'.$row['status'].'</td>
        <td align="center">'.'<a href="delete.php?id='.$row['user_id'].'">'.'Delete'.'</a>'.'</td>';

您缺少引号。

'<td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>';

如果您需要能够从一个页面删除多个用户,我建议您使用delete.php。 但是,您可以使用jQuery AJAX来处理请求,而无需重新加载页面。

一些不必要的引号和点。 像下面这样:

<td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>';

因此代码将是:

echo '<tr class="row1" style="height:25px;">
          <td align="center">'.$row['acc_no'].'</td>
          <td align="center">'.$row['comp_name'].'</td>
          <td align="center">'.$row['comp_desc'].'</td>
          <td align="center">'.$row['status'].'</td>
          <td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>';
      echo '</tr>';

报价有问题

更换

<td align="center">'.'<a href='delete.php?id=".$row['user_id']."'>'.'Delete'.'</a>'.'</td>';

<td align="center">'.'<a href="delete.php?id='.$row['user_id'].'">Delete</a></td>';

这肯定会工作。

To avoid getting into a mess with quotes in future,you can write something like:

<?php foreach($results as $result): ?>

//say you have stored the results in $results as an associative array after executing a query

<tr>  //looping an entire row
<td align=""><?=$result['name']?></td>
<td align=""><?=$result['email']?></td>
.
.
.
<td align=""><a href="delete.php?id=<?=$result['id']?>">Delete</a></td>
</tr>  //end of row

<?php endforeach; ?>   //end of loop

更改此行

<td align="center">'.'<a href='delete.php?id=".$row['user_id']."'>'.'Delete'.'</a>'.'</td>';

<td align="center"><a href="delete.php?id='.$row['user_id'].'">Delete</a></td>';

如果您查看帖子中代码的语法突出显示,则应该能够发现错误。

就是说,您应该阅读一些内容,以极大地提高代码质量。

首先是SQL中的JOIN。
在这种情况下,您要对已经设置的外键关系在tbl_engineer表上进行INNER JOIN。 这将使查询看起来像这样:

SELECT [fields] FROM companies AS c
INNER JOIN engineers AS e ON e.id = c.engineer_id
ORDER BY c.date

这将帮助您大大减少运行的查询数量。 从1 + x(其中x是记录数)到1。如果您有几千条记录,则脚本的资源消耗会迅速增加。

第二件事是您在这里有几个安全问题。 即通过会话数据进行SQL注入,因为您在这里没有使用准备好的语句。 以及通过表进行XSS攻击,因为您没有使用htmlspecialchars()来防止用户将HTML注入源中。

第三件事是,您应该始终在header()重定向之后使用die() 否则,PHP脚本将继续运行,并在重定向后执行大多数/所有代码。

第四个也是次要的问题是缩进可以解决一些问题。 确保一致且正确地缩进。 这将有助于您和其他人稍后阅读您的代码,并减少发生错误的可能性。

同样,如果没有“ delete.php”页面,也无法将删除内容“合并”到脚本中。 这是因为HTTP通信是如何工作的,因为您需要在服务器上有一个页面来接收和处理用户的请求。
最接近的是将删除代码移到从数据库中获取数据的脚本中。 如果这样做,则需要在URL中添加第二个参数,以告诉您的脚本运行该代码分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM