Mysqli删除查询

时间:2013-04-21 17:16:12

标签: php mysqli

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

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

3 个答案:

答案 0 :(得分:1)

以下行删除了所有包含单词" 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"表示命令编写错误。

答案 1 :(得分: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)

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

答案 2 :(得分:0)

您可以使用PHP的unlink()功能删除文件(docs here)。

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

$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注入。

编辑:这不是最有效的方式 - 我已经证明了这种方式简化代码,你最好将数据添加到数组然后删除所有单个查询中的行。