イベントIDが何らかの値(一意のキー)と等しく、IDが配列にないテーブルのすべての行を削除しようとしています。
したがって、 event_id=5
4行が(1,2,3,4)
あり、配列にイベントIDが等しい場所(1,2)
を削除したいとしましょう。3,4
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')
どうすればこれを機能させることができますか?