我正在使用Joomla 3组件中的脚本,并且需要有一个mysqli删除查询,但它无法正常工作。没有错误......它似乎没有做任何事情。这就是我所拥有的:
$query = $db->getQuery(true);
$conditions = array(
$db->quoteName('id') . ' = 50',
$db->quoteName('id') . ' = 54',
$db->quoteName('id') . ' = 73',
$db->quoteName('id') . ' = 86',
$db->quoteName('id') . ' = 92'
);
$query->delete($db->quoteName('#__menu'))->where($conditions);
$db->setQuery($query);
$result = $db->query();
$ conditions数组比这个长得多,但我在这篇文章中缩短了它。我认为我的查询遗漏了一些东西,但我找不到任何可以显示我在这里所做的事情。这个相同的设置适用于其他查询,只是没有删除一个。谢谢!
答案 0 :(得分:1)
不确定您是否已经这样做,但似乎没有定义$db
。请参阅以下代码:
$db = JFactory::getDbo();
除此之外,您使用变量$db->query()
定义$results
,但似乎并未调用它。我还建议将query
替换为execute
,因为它已被弃用。
以下是您的最终代码:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$conditions = array(
$db->quoteName('id') . ' = ' . $db->quote('50'),
$db->quoteName('id') . ' = ' . $db->quote('54'),
$db->quoteName('id') . ' = ' . $db->quote('73'),
$db->quoteName('id') . ' = ' . $db->quote('86'),
$db->quoteName('id') . ' = ' . $db->quote('92')
);
$query->delete($db->quoteName('#__menu'))
->where($conditions);
$db->setQuery($query);
$db->execute();
答案 1 :(得分:1)
已解析的SQL为id=50 AND id=54 AND id=73
- 当然没有记录具有与之匹配的ID。你需要id=50 OR id=54 OR id=73....
可能会有更多" Joomla Correct"这样做的方式,但他会给你正确的WHERE子句:
$query->where('`id` IN (50,54,73,86,92)';