簡體   English   中英

PHP PDO從數組中刪除

[英]PHP PDO Delete from array

我有一組GUID:

Array
(
    [0] => 1770302746_580821208_2068022554_1652435499
    [1] => 595039408_884272175_1344680100_1997277231
    ...
)

我內爆到逗號分隔的字符串*:

1770302746_580821208_2068022554_1652435499,595039408_884272175_1344680100_1997277231

然后我將其傳遞給sql DELETE語句:

$q=$conn->prepare(" DELETE FROM su_posts_att_sort WHERE FileGUID IN ({$GUIDs}) ");
$q->execute();

但是,不會刪除任何行。 放置try / catch塊以返回任何異常沒有引發任何異常。 誰能讓我知道我要去哪里錯了?

*還嘗試將每個GUID括在雙引號中。

編輯這是提交的SQL:

DELETE FROM su_posts_att_sort WHERE FileGUID IN ('1770302746_580821208_2068022554_1652435499','595039408_884272175_1344680100_1997277231') 

通過控制台工作正常...

您需要使用單引號,而不是雙引號,當然也不要使用非引號-它們包含下划線,因此它們絕對是字符串,而不是數字。

但是,與其僅添加引號,不如使用PDO::quote方法會更好,因為這將確保無論您使用的是什么數據庫,也不管潛伏着什么奇怪的字符,它們都使用正確的引號在數據中。

您可以使用array_map()在一行代碼中將PDO::quoteimplode()一起應用於一行代碼中的所有元素。 像這樣:

$guids = implode(',', array_map(array($pdo,'quote'), $guidArray));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM