[英]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::quote
與implode()
一起應用於一行代碼中的所有元素。 像這樣:
$guids = implode(',', array_map(array($pdo,'quote'), $guidArray));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.