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

时间:2013-05-19 20:31:49

标签: 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 = 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++;
}

这实际上会“清空”该行,但会留下一个空白单元格,该单元格在我打印数据时实际显示。然后我必须去phpMyAdmin手动删除空白区域。我不明白为什么会这样做。

我仍然是初学者,编程实际上只是我的一个爱好,但如果有人能给我线索并指出正确的方向,我将不胜感激。

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

尝试这样。

$sql = "DELETE FROM members WHERE name='" . mysql_real_escape_string($_POST["delmember"]) . "'";

顺便说一下,如果name字段不唯一,那么按名称删除用户并不是一个好主意,您应该使用id字段作为主键,并使用id进行所有操作。

另一个是使用mysqli或pdo而不是mysql。

read the warning