[英]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.