[英]i want to Delete where id=$POST['id'] in php mysql
我的刪除條目代碼是這樣,但是它什么也沒做
的HTML
<form id="form3" name="form3" method="post" onsubmit="return validateForm();" action="">
Id <input type="text" class="txt" name="id" /><br />
<input type="submit" id="delete" value="delete"/>
</form>
的PHP
global $wpdb;
if ( isset ( $_POST['id'] ) && ! empty ( $_POST['id'] ))
{
$wpdb->query("DELETE " . PRO_TABLE_PREFIX . "tutorial WHERE id='{$_POST['id']}'");
}
那就是我通常的做法:
$wpdb->query("DELETE " . PRO_TABLE_PREFIX . "tutorial WHERE id='".$_POST['id']."')
為了避免這樣的混亂,我總是在需要連接字符串的地方使用sprintf()
更改:
global $wpdb;
if ( isset ( $_POST['id'] ) && ! empty ( $_POST['id'] )) {
$wpdb->query("DELETE " . PRO_TABLE_PREFIX . "tutorial WHERE id='{$_POST['id']}'");
}
至:
global $wpdb;
if ( isset ( $_POST['id'] ) )) {
$wpdb->query(sprintf("DELETE %stutorial WHERE id='%s'", PRO_TABLE_PREFIX, $_POST['id']));
}
需要注意的幾件事:
1)您容易受到SQL注入的攻擊
2)一旦使用isset()
確定$_POST['id']
的鍵是否實際上不是NULL
,就不需要通過empty()
檢查其是否為空
更新資料
您應該真正測試$_POST['id']
是否有效。 我建議您實現一個函數,例如is_id_valid()
function is_id_valid(&$id){ //<-- IMPORTANT, Argument should be a reference
if ( ! isset($id) ){
return false;
}
if ( empty($id) ){
return false;
}
// add this if you expect $id to be a numeric value
// otherwise just ignore - do not add
if ( ! is_numeric($id) ){
return false;
}
//it's also a good to validate the length
if ( strlen($id) > ... && strlen($id) < ... ){
return false;
}
//seems like all tests passed
return true;
}
然后,您將使用它,例如
if ( is_id_valid($_POST['id']) !== false ){
....
}
警告:仍然容易受到SQL注入的攻擊
刪除post['id']
周圍post['id']
單引號:
$wpdb->query("DELETE " . PRO_TABLE_PREFIX . "tutorial WHERE id={$_POST['id']}")
要么
echo $query = "DELETE " . PRO_TABLE_PREFIX . " tutorial WHERE id =".mysql_real_escape_string($_POST['id']);
$wbpd->query($query);
$wpdb->query("DELETE FROM " . PRO_TABLE_PREFIX . "tutorial WHERE id='{$_POST['id']}'");
PS:仔細檢查並接受對您最有幫助的答案。 還有這里! :P
嘗試以下代碼:-
global $wpdb;
if ( isset ( $_POST['id'] ) && ! empty ( $_POST['id'] ))
{
$wpdb->query("DELETE FROM " . PRO_TABLE_PREFIX . "tutorial WHERE id=".$_POST['id']);
}
give some action path to the form
html
<form id="form3" name="form3" method="post" onsubmit="return validateForm();" action="give some actions">
Id <input type="text" class="txt" name="id" /><br />
<input type="submit" id="delete" value="delete"/>
的PHP
global $wpdb;
if ( isset ( $_POST['id'] ) && ! empty ( $_POST['id'] ))
{
$id=stripslashes_deep($_POST['id']);
$wpdb->query("DELETE FROM " . PRO_TABLE_PREFIX . "tutorial WHERE id=$id");
}
由於您正在檢查WHERE子句中的id,因此無需將其包裝在引號中,並且在delete語句中缺少FROM,因此標准方法是:在插入數據庫之前對POST數據進行一些過濾,例如:
$id = (int) $_POST['id'];
if( $id > 0 ) {
$wpdb->query("DELETE FROM " . PRO_TABLE_PREFIX . "tutorial WHERE id=".$_POST['id']);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.