作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个名为 $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/
我是一名优秀的程序员,十分优秀!