我有一個叫做「private message」的MySQL表,名爲「messageid」的主鍵字段。從MySQL數據庫中刪除一行
我想要一個PHP查詢從「private message」中刪除任何行,其中「messageid = $ messageid」。
這是什麼類型的查詢?
由於提前,
約翰
我有一個叫做「private message」的MySQL表,名爲「messageid」的主鍵字段。從MySQL數據庫中刪除一行
我想要一個PHP查詢從「private message」中刪除任何行,其中「messageid = $ messageid」。
這是什麼類型的查詢?
由於提前,
約翰
DELETE FROM `privatemessage` WHERE `messageid` = $messageid
這只是原始的SQL查詢。像驗證和逃避用戶輸入等事情當然應該考慮。
例如,給定messageid
作爲AUTO_INCREMENT
整數主鍵我簡單地在PHP運行這個(轉換$messageid
使用intval()
一個int):
mysql_query('DELETE FROM `privatemessage` WHERE `messageid` = ' . intval($messageid));
$query = "DELETE FROM `privatemessage` WHERE `messageid` = '$messageid'";
mysql_query($query);
但首先,檢查$messageid
是一個數字(請參閱SQL Injection)。
Read more:關於MySQL刪除
誰低估了這個?爲什麼? – EFraim 2010-07-19 19:24:33
您可能需要使用preprared語句,所以你在關於SQL注入安全可靠...
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die('could not connet to database.');
}
$statement = $conn->prepare("DELETE FROM privatemessage WHERE messageid = ?");
$statement->bind_param("messageid", $messageid);
$statement->execute();
是你的代碼是** sql注入免費**對不對? – 2017-08-02 06:30:28
略微膨脹,[這]( http://www.w3schools.com/php/php_mysql_delete.asp)網頁有一個小而有用的例子。 – Stephen 2010-07-19 18:44:24
您應該使用參數,以便「1或1 == 1」的messageid不會刪除您的所有私人消息(sql注入) – 2010-07-19 18:44:25
事實上,如果您接受$ messageid的用戶輸入,請小心避免SQL注入。例如,用戶可能輸入'5 OR 1 == 1'作爲他們的輸入。然後形成查詢:'DELETE FROM'privatemessage'WHERE'messageid'='5'OR 1 == 1'。由於1 == 1總是爲真,所以會刪除每一行。 – Stephen 2010-07-19 18:47:16