0

我需要检查一个值是否在数据库中。我在用

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

$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__tablename'));
$query->where($db->quoteName('fieldname') . ' = ' . $db->quoteName($valuetocheck));
$db->setQuery($query);
$id = $db->loadResult();

echo "value = " . $id;

if($id) {/*action if the value already exists*/} else {/*...*/}

问题是我设置的每个新值$valuetocheck实际上都被插入到表中。如果我设置了一个尚不存在的值,它会被插入,所以我总是得到一个有效的$id并且无法继续到else {}.

那可能吗?是否有任何解决方法来检查一个值是否已经在里面?

4

2 回答 2

1

尝试这个,

查询永远不会向SELECT数据库插入任何值如果数据正在插入表中,则它应该在其他地方。$id此外,您可以检查numrows如下,而不是检查值。

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

$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__tablename'));
$query->where($db->quoteName('fieldname') . ' = ' . $db->quoteName($valuetocheck));
$db->setQuery($query);
$db->query();
if($db->getNumRows() >0){
 //Data found
}
else{
 //Nod Data found
}

希望能帮助到你..

于 2013-11-12T07:32:31.067 回答
1

不,这是不可能的。db 对象是否有可能在下面的代码中以不同方式重用?

  1. 尝试die('test 1');在您向我们展示的代码之前添加并运行以确保您自己不会更改表格。不要介意该网站没有显示任何内容。

  2. 然后将 die-command 移动到 echo-command 之后并再次运行。在我看来,valuetocheck 在这个阶段没有办法进入表格。查看!

  3. 插入 valuetocheck 时继续测试..

祝好运!

于 2013-11-12T07:23:58.550 回答