我遇到了一個問題,我試圖從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注入攻擊嗎?如果是這樣,你建議使用什麼? –