-1

创建 mysqli 删除查询时,如何运行 PHP 代码来删除与已删除信息关联的文件?

我知道,mysqli::$affected_rows但它并没有真正帮助我。

4

3 回答 3

2

以下行删除了“标题”列中包含“Cron”一词的所有行。

mysqli_query($con,"delete from `foexstco_rr`.`Timings` where `Title`='Cron'");

下一行删除了所有内容

mysqli_query($con,"delete from `foexstco_rr`.`Timings`");

此行删除了包含 3 个条件的行。请注意,** 和 ** 必须将每个条件分开。

mysqli_query($con,"delete from `foexstco_rr`.`Timings` where `Number`='77' and `Title`='Cron' and `Cols`='1'");

如果您打印了 MySqli 响应,“1”将意味着该命令已被执行,但并不一定意味着任何行已被删除。“0”表示命令写入错误。

于 2017-07-06T09:15:47.283 回答
0

您可以运行两个查询。那将是:

SELECT id, relevant_field from my_table WHERE the_condition_for_the_rows_to_delete.

然后是第二个查询:

DELETE FROM my_table WHERE id IN (the_ids_you_got_with_the_first_select)

之后,您将删除与第一个查询结果关联的文件。

于 2013-04-21T17:30:15.363 回答
0

您可以使用 PHP 的unlink()函数来删除文件(此处的文档)。

首先进行查询以获取文件位置,然后通过结果循环运行:

$mysqli = new mysqli("localhost", "user", "password", "database");
$results = $mysqli->query("SELECT id,file_path FROM table WHERE whatever")->fetch_assoc();
foreach($results as $result) {
    unlink($row['file_path']);
    $mysqli->query("DELETE FROM table WHERE id = " . $row['id']);
}

确保清理任何用户提交的输入以避免 SQL 注入。

编辑:这不是最有效的方法——为了简化代码,我已经演示了这种方式,最好将 id 添加到数组中,然后在单个查询中删除所有行。

于 2013-04-21T17:47:07.247 回答