2013-04-21 73 views
-1

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

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

+0

这就是为什么你应该将文件存储在数据库中,而不是路径。 – vascowhite 2013-04-21 17:19:05

+0

@vascowhite你是什么意思? – 2013-04-21 17:46:42

+1

RTLM:http://php.net/unlink @vasco:db中的文件是一个好主意。从删除查询中杀死“文件”的次要效率增益也不足以弥补其带来的所有其他麻烦 – 2013-04-21 17:48:42

回答

0

可以运行两个queries.That会是这样:

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) 

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

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

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

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”表示命令被错误地写入。