-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 地址周围加上 ' ',这很棘手。提前谢谢大家。

4

2 回答 2

5

mysql_query函数无法格式化字符串。

你可能在想sprintf()

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

考虑切换到PDOor mysqli,因为现在不推荐使用 mysql 扩展。

于 2013-10-23T15:36:09.527 回答
1

mysql_query()不能像那样格式化您的查询。

您可能正在寻找sprintf()

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

请注意,您的代码容易受到 SQL 注入的攻击。在数据库查询中使用用户输入之前,您应该始终对其进行清理。更好的是,切换到 MySQLi / PDO 并使用准备好的语句。

于 2013-10-23T15:36:22.660 回答