Joomla 3 MySQLi删除查询语法

时间:2014-07-21 15:11:49

标签: php joomla mysqli

我正在使用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数组比这个长得多,但我在这篇文章中缩短了它。我认为我的查询遗漏了一些东西,但我找不到任何可以显示我在这里所做的事情。这个相同的设置适用于其他查询,只是没有删除一个。谢谢!

2 个答案:

答案 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)';