ลบอาร์เรย์ที่ไม่ทำงานกับ PDO SQL หรือไม่

Aug 26 2020

เป็นเวลา 3 ชั่วโมงแล้วที่ฉันพยายามลบแถวใน mysql ตาม id ... ดูเหมือนง่ายใช่ไหม

โดยคำนึงว่าอาร์เรย์อาจมีหลายค่า: $ result = Array ([3] => 4_Couture)

Array ( [3] => 4_Couture )
$sql_delete = "DELETE FROM users_resumes WHERE id_training_key = ? ";
$stmt_delete= $pdo->prepare($sql_delete); foreach($result as $r) { $stmt_delete->execute($r);
    }

ดูเหมือนจะใช่ไม่ใช่เหรอ? ข้อผิดพลาด: PDOStatement :: execute () คาดว่าพารามิเตอร์ 1 จะเป็นอาร์เรย์สตริงที่กำหนด

ยินดีต้อนรับเบาะแสใด ๆ ใด ๆ ! ขอบคุณมากจากฝรั่งเศส!

คำตอบ

4 Phil Aug 26 2020 at 08:42

สมมติว่า$resultเป็นอาร์เรย์หนึ่งมิติเช่น

$result = [ 3 => '4_Couture' ];

นั่นหมายความว่าคุณกำลังพยายามเรียก$stmt->execute()ด้วยค่าสตริงเดียวที่ต้องใช้อาร์เรย์

ฉันขอแนะนำให้คุณใช้bindParamแทน

$stmt_delete = $pdo->prepare("DELETE FROM users_resumes WHERE id_training_key = ?"); $stmt_delete->bindParam(1, $r); foreach ($result as $r) { $stmt_delete->execute();
}