我遇到了一个问题,我试图从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手动删除空的空间。我不明白为什么会这样做。
我还是个初学者,程序设计真的只是我的一个爱好,但如果有人会给我提供线索并指向正确的方向,我将不胜感激。
非常感谢!
如果你运行'SELECT * FROM成员会发生什么情况,其中name = '{$ _ POST [' delmember ']}''并获得关联数组** **后,你已经删除的行? –
**不要**从'$ _POST'将用户变量注入查询字符串。你必须使用[适当的SQL转义方法](http://bobby-tables.com/php)转义任何和所有的值。您还将使用在未来版本的PHP中将被删除的不推荐使用的'mysql_query'接口。如果你想让你的代码继续工作,你需要切换到支持的东西,如[PDO](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps- PDO换数据库访问/)。如果你刚刚开始使用PHP,[尝试遵循最佳实践](http://biasedphp.com/php-commandments)。 – tadman
我知道我做错了很多事情,我会研究一下你们先生们的建议,以使我的代码合适和清洁。然而,我仍然有我的下面的代码(目前'工作',尚未弃用)的问题。另外为什么你建议不在我的查询字符串中使用$ _POST?是关于SQL注入攻击吗?如果是这样,你建议使用什么? –