一个href无法处理我的echo php

时间:2016-09-19 06:40:50

标签: 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的情况下集成它?

非常感谢!

7 个答案:

答案 0 :(得分:2)

这应该有效:

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>';

答案 1 :(得分:1)

你缺少引号。

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

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

答案 2 :(得分:1)

一些不必要的引号+点。如下所示: -

<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>';

答案 3 :(得分:1)

引号存在问题

替换

<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>';

这肯定会奏效。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

更改此行

<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>';

答案 6 :(得分:0)

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

那说你应该阅读一些内容,以便大大提高代码的质量。

首先是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注入您的来源。

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

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

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