2013-10-23 81 views
-1
<?php 
//Connect to DB 
$dbcnx = @mysql_connect("$db_host", $db_user, "$db_password"); 
if (!$dbcnx) { 
echo("<P>Unable to connect to the " . 
    "database server at this time.</P>"); 
exit(); 
} 
mysql_select_db("daily_audit", $dbcnx); 
// Request the text of all the hosts 
if(!empty($_POST['checklist'])) { 
    foreach($_POST['checklist'] as $check) { 
     $result = mysql_query(
      "DELETE FROM hosts_list WHERE IP_Address = %s ", $check); 
if (!$result) { 
echo("<P>Error performing query: " . 
    mysql_error() . "</P>"); 
exit(); 
} 
    } 
} 
?> 

我有一個問題需要運行下面的代碼。我已經確認_POST變量包含數據,但我確信我的SQL查詢正在處理中存在問題。對不起,我是一個PHP n00b,我正試圖瞭解如何解決此問題。我知道查詢可能需要在IP地址周圍進行這個棘手的問題。感謝所有提前。將_POST變量傳遞給Mysql WHERE子句

+0

究竟是什麼問題? – andrewsi

回答

1

mysql_query()無法格式化您的查詢。

你可能尋找sprintf()

$result = mysql_query(
    sprintf("DELETE FROM hosts_list WHERE IP_Address = %s ", $check)); 

請注意,你的代碼很容易受到SQL注入。在數據庫查詢中使用它之前,您應始終對用戶輸入進行清理。更好的是,切換到MySQLi/PDO並使用準備好的語句。

+0

謝謝你的幫助。這是有道理的,我會研究你提到的兩個庫。再次感謝。 –

5

mysql_query函數不能格式化字符串。

你很可能想的sprintf()

$query = sprintf("DELETE FROM hosts_list 
        WHERE IP_Address = %s", mysql_real_escape_string($check)); 
$result = mysql_query($query); 

考慮改用PDOmysqli,因爲MySQL擴展現在已經過時。