gpt4 book ai didi

php - 如何在 Joomla 查询中使用 MySQL IN - 语法问题

转载 作者:可可西里 更新时间:2023-11-01 08:29:21 24 4
gpt4 key购买 nike

我有一个名为 $del_ids 的变量,它使用 array_keys() 函数:

$del_ids = implode("','", array_keys($_POST['gallery']));

$del_ids 输出一个如下所示的数组:

Array
(
[2] => on
[4] => on
)

我需要删除任何具有与数组中匹配的 ID 的行。如果我使用程序化 PHP,效果会很好:

$query = "DELETE FROM studio_sessions WHERE id IN('$del_ids')";
$result = mysqli_query($connection, $query);

当我将其转换为 Joomla 查询时,我无法正确获取 IN 语法。例如:

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$conditions = array(
$db->quoteName('id' . ' IN ' . $del_ids)
);

$query->delete($db->quoteName('#__studio_sessions'));
$query->where($conditions);

$db->setQuery($query);
$result = $db->execute();

我收到这个错误:

1054 Unknown column 'id IN 2','4' in 'where clause' SQL=DELETE FROM `vsem6_studio_sessions` WHERE `id IN 2','4` 

看起来我可能在 id 和 2 周围遗漏了一些单引号,但我的语法不正确 - 任何人都可以发现问题吗?

最佳答案

$db->quoteName('id' . ' IN ' . $del_ids)

不正确。您将整个 long strng 视为一个名称,这就是为什么它认为 'id IN('2','4')' 是列名的原因。

尝试$db->quoteName('id') 。 'IN ('.$del_ids.')'

你的初始内爆也应该是

$del_ids = implode(',', array_keys($_POST['gallery']));

否则,您将得到 ',' 作为分隔符,而不是 '

关于php - 如何在 Joomla 查询中使用 MySQL IN - 语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com