Php 删除行会留下空单元格吗?

Php 删除行会留下空单元格吗?,php,mysql,Php,Mysql,我遇到了一个问题,试图从Mysql表中删除一行。这是我写的代码: $sql = "DELETE FROM members WHERE name='$_POST[delmember]'"; $retval = mysql_query($sql); if(!$retval) { die("Couldn't delete data: " . mysql_error()); } 打印我的数据库的代码: $sql = 'SELECT name FROM members'; $retval = m

我遇到了一个问题,试图从Mysql表中删除一行。这是我写的代码:

$sql = "DELETE FROM members WHERE name='$_POST[delmember]'";
$retval = mysql_query($sql);
if(!$retval) {
    die("Couldn't delete data: " . mysql_error());
}
打印我的数据库的代码:

$sql = 'SELECT name FROM members';
$retval = mysql_query($sql, $conn);
if(!$retval) {
        die("Couldn't get data: " . mysql_error());
    }
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
    if($col == $cols) {
            $col = 0;
            echo '</tr><tr>';
        }
        echo '<td align="center"><a class="stats" href="members.html?stats='.$row[0].'">' . $row[0] . '</a></td>';
        $col++;
}
$sql='从成员中选择名称';
$retval=mysql\u查询($sql,$conn);
如果(!$retval){
die(“无法获取数据:”.mysql_error());
}
而($row=mysql\u fetch\u数组($retval,mysql\u NUM)){
如果($col==$cols){
$col=0;
回声';
}
回声';
$col++;
}
这实际上会“清空”行,但会留下一个空单元格,在我打印数据时实际显示。然后我必须转到phpMyAdmin手动删除空白。我不明白它为什么这样做

我还是一个初学者,编程只是我的一个爱好,但如果有人能给我一些线索,给我指出正确的方向,我将不胜感激


非常感谢

为了更好地学习MySQL语法,启动MySQL会话的控制台并直接键入一些命令。您的语法看起来正确,但我们不知道您正在使用的数据库的规则或您正在查看的视图

很难判断您看到的是phpMyAdmin的工件,还是数据库其他方面的结果,或者是用于“打印”数据的代码的结果。

像这样尝试

$sql = "DELETE FROM members WHERE name='" . mysql_real_escape_string($_POST["delmember"]) . "'";
顺便说一句,如果
name
字段不是唯一的,那么按名称删除用户不是一个好主意,您应该使用id字段作为主键,并对所有操作使用id

另一件事是使用mysqli或pdo代替mysql


将mysql\u real\u escape\u字符串添加到正在访问的变量中并没有任何区别。我不仅仅添加了escape函数,他使用了错误的post数据。实际上,我纠正了它。实际上@rcpayan what OP起作用了,即使它确实发出警告。OP中的代码起作用了,但这不是正确的做法,代码的问题不在于他没有引用post值,也不在于他没有逃避数据,这就是我得到的要点at@JakeBall绝对地任何包含
mysql\u query
的代码都需要立即删除并替换,或者在PHP将来不再支持它时删除并替换。如果运行
SELECT*FROM members,其中name='{$\u POST['delmember']}“
并在删除行后获取关联数组?永远不要将
$\u POST
中的用户变量注入查询字符串。必须使用转义任何和所有值。您还使用了弃用的
mysql\u查询
接口,该接口将在未来的PHP版本中删除。如果希望代码继续工作,则需要切换到受支持的代码,如。如果您刚刚开始使用PHP,。我知道我有很多地方做错了,我将研究一下您的绅士们为使我的代码适当和干净而提出的所有建议。但是,我的以下代码仍然存在问题(目前“有效”,尚未弃用)。还有,为什么建议不要在我的查询字符串中使用$\u POST?是关于SQL注入攻击吗?如果是,你建议用什么?谢谢你的及时回复。为了进一步了解,我只使用了一个名为name的字段。我没有任何附加的ID,因此我假设删除此名称字段会删除整行。我将在我的原始帖子中添加用于打印数据的代码。@JonathanLachapelle我们仍然看不到您用于打印数据的代码,
(用于组织和打印我的数组的代码)
真的没有帮助。@Jake Ball我刚刚把全部内容放在这里,但这不是问题所在。我的数组格式非常好,问题在于从数据库中删除条目,当我尝试这样做时,它不会删除字段,只会清空数据并留下一个空行,然后通过我的打印显示出来。@JonathanLachapelle那么你是说,当你使用DELETE语句时,它只是清除受影响的行,实际上并没有删除它?@Jake Ball这正是我的问题,这就是我在原始帖子中试图解释的。如果我以前错误地解释了这个问题,我很抱歉。