我正在尝试删除事件ID等于某个值(唯一键)且ID不在我的数组中的表的所有行;
所以假设event_id=5
有 4 行(1,2,3,4)
,我的数组有(1,2)
我想删除3,4
事件 id 等于的位置5
。
要做到这一点: - >从一个数组中选择 ID 并将 ID 放入另一个数组(似乎工作)
->删除除选择查询附带的行之外的所有行(失败删除表的所有行)。
$query = "SELECT file_id FROM FILES WHERE event_id=$event_id AND name IN ('$names')";
$result = $sql->query($query);
//printf("$query: %s\n", $query);
var_dump($query);
//printf("\n");
if (!$result) {
var_dump($result);
printf("Query failed: %s\n", $mysqli->error);
sendResponse(417, json_encode("Query failed"));
exit;
}
//printf("\n");
$rows = array();
while($row = $result->fetch_row()) {
$rows[]=$row;
printf("\n");
}
$result->close();
var_dump($rows);
printf("\n");
$delete = join("', '",$rows);
var_dump($delete);
printf("\n");
//send delete request here
$query ="DELETE FROM FILES WHERE event_id=$event_id AND file_id NOT IN ('$delete')";
$result = $sql->query($query);
//printf("$query: %s\n", $query);
var_dump($query);
printf("\n");
if (!$result) {
var_dump($result);
printf("\n");
printf("Query failed: %s\n", $mysqli->error);
sendResponse(417, json_encode("Query failed"));
exit;
}
日志:
string(143) "SELECT file_id FROM FILES WHERE event_id=7 AND name IN ('sample-1.pdf', '2012-lve-vegas-faq.pdf', 'sample-2.pdf', 'sample-3.pdf', 'sample.pdf')" array(5) { [0]=> array(1) { [0]=> string(2) "89" } [1]=> array(1) { [0]=> string(2) "90" } [2]=> array(1) { [0]=> string(2) "91" } [3]=> array(1) { [0]=> string(2) "92" } [4]=> array(1) { [0]=> string(2) "93" } } string(41) "Array', 'Array', 'Array', 'Array', 'Array" string(99) "DELETE FROM FILES WHERE event_id=7 AND file_id NOT IN ('Array', 'Array', 'Array', 'Array', 'Array')"
你可以在日志中看到$delete = join("', '",$rows);
原因('Array', 'Array', 'Array', 'Array', 'Array')
不是我想要的,应该是这样的('89','90', '91', '92', '93')
我怎样才能使这项工作?