我正在编写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数组比这长得多,但我在本文中缩短了它。我假设我的查询缺少一些东西,但我找不到任何地方显示我在这里做什么。同样的设置也适用于其他查询,只是这个delete查询不行。谢谢!
解析的SQL是id=50 AND id=54 AND id=73
-当然没有记录具有与之匹配的ID。你会想要id=50 OR id=54 OR id=73....
可能有一种更"Joomla正确"的方法,但他会给你正确的WHERE子句:
$query->where('`id` IN (50,54,73,86,92)';
不确定您是否已经这样做了,但您似乎没有定义$db
。请看下面的代码:
$db = JFactory::getDbo();
除此之外,您正在使用变量$results
定义$db->query()
,但似乎没有调用它。我还建议将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();